<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="https://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"
>
    <channel>
                    <atom:link rel="alternate" hreflang="en-AU"
                       href="https://www.tomsguide.com/au/feeds/tag/workouts"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from Tom's Guide AU in Workouts ]]></title>
                <link>https://www.tomsguide.com/au/wellness/fitness/workouts</link>
        <description><![CDATA[ All the latest workouts content from the Tom's Guide  AU team ]]></description>
                                    <lastBuildDate>Fri, 26 Jun 2026 07:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Forget crunches — this 10-minute core workout fired up my abs more than 100 sit-ups using a surprising piece of equipment ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-crunches-this-10-minute-core-workout-fired-up-my-abs-more-than-100-sit-ups-using-a-surprising-piece-of-equipment</link>
                                                                            <description>
                            <![CDATA[ Grab a soccer ball or similar and give this five-move abs routine a try. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">XkcbpiMardTEBYBqeS8mGe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QFbFsGUdC7vySRDKs6TJCW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Jun 2026 07:00:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QFbFsGUdC7vySRDKs6TJCW-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing a bear plank with Pilates ball]]></media:description>                                                            <media:text><![CDATA[a woman doing a bear plank with Pilates ball]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing a bear plank with Pilates ball]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QFbFsGUdC7vySRDKs6TJCW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've officially got World Cup fever, and I even bought my dog Mobie a little mini soccer ball to play with outdoors during the warmer weather in the UK. One evening recently, admittedly a little bored, I started playing with the ball and realized it's pretty similar to a Pilates ball.</p><p>Without hesitation, I rolled out one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> and got to work programming a quick 10-minute abs workout using just the ball for equipment. My core is still trembling now. </p><p>Get ready for a humbling core workout with very little equipment, and remember, if you experience any pain during this routine or you're unsure if you should be doing it, please seek advice first.</p><h2 id="watch-10-minute-abs-routine">Watch: 10-minute abs routine</h2><p>Before we get started, building a strong core means more than hitting your abs hard. For that reason, these moves target a range of muscles, including your obliques and deeper core muscles; the former support rotational and lateral movement, whereas the deeper muscles stabilize your torso and act as your body's natural corset.</p><p>You'll be performing these exercises from the side plank and bear plank position, but you can place a supporting knee down at any point if this puts too much strain on your upper body, as they all really fire up the shoulders. </p><p>Throughout, focus on pushing up and away with your shoulder and forearm or hand (whichever is supported on the mat) to help protect your shoulder joints and prevent dumping into the upper body. Think about lifting away from the mat, while actively engaging your core by bracing your stomach and drawing your navel in and up.</p><p>Move with control and focus, not speed, focusing on inhaling and exhaling as you move. Aim for 45 seconds of work, 15 seconds of rest and 2 rounds; if you have time, add more rounds. </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/DZ7Plx9CUch/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li><strong>Side plank crunch combo: </strong>Start in a side plank with your forearm resting on the mat and stacked beneath your shoulder. Hold the ball in your top hand. Brace your stomach, then lift your top leg into the air and touch the ball to your foot. Return to side plank, then extend your leg in front of you and reach with your hand to touch the ball to your foot. Return to center, then repeat.</li><li><strong>Bear plank knee squeeze: </strong>Start on your hands and knees with your shoulders over your wrists. Tuck your toes and brace your stomach, then lift your knees to hover an inch or two off the mat. Step your right foot back slightly, then place the ball between your left forearm and knee. Hold it in position, keep your back flat, then squeeze and release the ball for reps. Switch sides.</li><li><strong>Bear plank kickbacks: </strong>Come back into your bear plank (as above) with the ball positioned between your left forearm and knee. Hold the position with your core braced, then draw your knee inward toward your nose as you push through your hands. Extend your right leg out behind you to hip level, then return to center and repeat. Remember to switch sides.</li><li><strong>Bear plank roll-ups: </strong>Come back to your bear plank (as above) and position the ball between your left forearm and knee. Keep your back flat and core strong as you press the ball into your forearm and roll it up and down with control. Switch sides.</li><li><strong>Standing warrior pulses: </strong>Stand with your left foot forward and right foot back, tucking the toes of your back foot. Lean your weight forward into your left leg. Your feet should be hip-width apart; think train tracks rather than a tightrope with your hips forward. Hinge at the hips while keeping your back flat and gaze forward. Position the ball between one hip and your stomach, then slightly lift and lower your torso to press into the ball and release. Switch sides.</li></ul><h2 id="what-are-the-benefits">What are the benefits? </h2><p>I found this routine a lot more versatile and fun to explore than peddling out sit-ups and crunches. Sure, planks are nothing new, but adding the ball and some stability work into the mix tested my balance, fired up my abs and obliques and made me work even harder than usual. </p><p>The ball gives you something to focus on, as you'll need to control the action of it during every move, whether that means gripping it with one hand, pressing it into your thigh or forearm, or rolling it up and down your body. There's plenty to think about, which means you will also notice your muscles working to keep your form in check. That means plenty of core engagement and pressing through your hands to create space beneath you.</p><p>See if you can slow each of the five moves down and aim for the same number of reps per side, move and round. Really press into the ball to activate all those smaller, stabilizer muscles in the body, which will also help you to consciously contract more muscles.</p><p>I also felt this one in my shoulders and hip flexors, which can be a problem area for me as I sit behind a desk for multiple hours during the day. Strong hips and shoulders protect your posture and lower back, so I would try to include shoulder and hip work in any stretching or mobility routine you do.</p><p>Whether you enjoy running, weightlifting, Pilates, or something else entirely, a strong and stable core is crucial for helping you move safely, lift well and avoid injury, so taking the time to include exercises or routines like this will also provide longevity in the gym.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ This 15-minute chair workout helps you strengthen your whole body, and you just need a light set of dumbbells ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/this-15-minute-chair-workout-helps-you-strengthen-your-whole-body-and-you-just-need-a-light-set-of-dumbbells</link>
                                                                            <description>
                            <![CDATA[ If you’re looking for a short and effective way to improve your strength and stability safely, then look no further than this 10-move chair workout. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">apNBBxretDTvKMtcXQGRFn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/r7SzXSsXxRH4CwvwvnAewM-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 26 Jun 2026 05:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick has been a journalist since 2012 and has spent most of that time writing about health and fitness for a variety of publications. Nick spent nine years working on the Coach magazine and website before moving to the fitness team at Tom’s Guide in 2024. Nick is a keen runner and also the founder of YouTube channel &lt;a href=&quot;https://www.youtube.com/channel/UCOBM9FasII4dKbyE_HKkbjw&quot;&gt;The Run Testers&lt;/a&gt;, which specialises in reviewing running shoes, watches, headphones and other gear.&lt;/p&gt;&lt;p&gt;Nick has covered all aspects of health and fitness throughout his career, interviewing experts and celebrities, trying fitness classes and running marathons, all in the name of providing readers with the information they need to get the most out of an active lifestyle.&lt;/p&gt;&lt;p&gt;Nick ran his first marathon in 2016 after six weeks of training for a magazine feature and subsequently became obsessed with the sport. He now has PBs of 2hr 25min for the marathon and 15min 30sec for 5K, and has run 16 marathons in total, as well as a 50-mile ultramarathon.&lt;/p&gt;&lt;p&gt;Nick runs 60-90 miles a week and races regularly with his club, which gives him a lot of opportunity to test out running gear: he has tested and reviewed hundreds of pairs of running shoes, as well as fitness trackers, running watches, sports headphones, treadmills, and all manner of other kit. Nick is also a qualified Run Leader in the UK.&lt;/p&gt;&lt;p&gt;Nick is an established expert in the health and fitness area and along with writing for several publications, including &lt;a href=&quot;https://www.livescience.com/author/nick-harris-fry&quot;&gt;Live Science&lt;/a&gt;, &lt;a href=&quot;https://www.expertreviews.co.uk/authors/nick-harris-fry&quot;&gt;Expert Reviews&lt;/a&gt;, &lt;a href=&quot;https://www.wareable.com/author/n.harris-fry&quot;&gt;Wareable&lt;/a&gt;, &lt;a href=&quot;https://www.coachweb.com/author/nick-harris-fry&quot;&gt;Coach&lt;/a&gt; and &lt;a href=&quot;https://www.getsweatgo.com/author/n.harrisfry&quot;&gt;Get Sweat Go&lt;/a&gt;, he has been quoted on &lt;a href=&quot;https://www.theguardian.com/thefilter/2024/oct/20/if-you-pay-more-than-4-youre-being-ripped-off-the-fair-price-for-14-everyday-items-from-cleaning-spray-to-olive-oil&quot;&gt;The Guardian&lt;/a&gt; and &lt;a href=&quot;https://www.independent.co.uk/life-style/health-and-families/london-marathon-2021-date-training-tips-summer-running-a9482486.html&quot;&gt;The Independent&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Nick graduated from the University of York in 2010 with a degree in Politics, Philosophy and Economics and worked in the NHS for three years, during which time he completed his NCTJ Diploma in Journalism at News Associates in London. Before starting on Coach and moving into health and fitness, Nick worked as a football journalist and lived in Kathmandu, Nepal for two years.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/r7SzXSsXxRH4CwvwvnAewM-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman doing a chair workout]]></media:description>                                                            <media:text><![CDATA[a photo of a woman doing a chair workout]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman doing a chair workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/r7SzXSsXxRH4CwvwvnAewM-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The benefits of chair workouts are that they allow you to train without putting too much pressure on your joints or worrying about your balance, which makes them an accessible option for seniors in particular.</p><p>These benefits do come with a downside, however, in that it can be hard to strengthen all areas of the body when training while seated.</p><p>It’s not impossible, though, as this 10-move chair workout from fitness trainer Lauren of <a href="https://www.youtube.com/@SeniorShapeFitness" target="_blank" rel="nofollow">SeniorShape Fitness</a> shows. It’s a seated session that strengthens the whole body, and all you need is a set of light dumbbells and a chair.</p><p>Lauren is using 5lb dumbbells for the workout, but pick a weight that suits you, or you can use a couple of cans instead if you don’t have dumbbells to hand. </p><p>Whatever weights you end up using, if they feel too heavy during the session, feel free to pop them down and do the exercises without any weight.</p><h3 class="article-body__section" id="section-watch-seniorshape-fitness-10-move-chair-workout"><span>Watch SeniorShape Fitness’ 10-move chair workout</span></h3><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/S9ctJJwInv8" allowfullscreen></iframe></div></div><p>In the video, Lauren guides you through a warm-up and cool-down as well as the workout itself, which takes around 15 minutes.</p><p>There are 10 exercises in the workout, and you do each for a minute, then rest for 15 seconds. Lauren demonstrates each upcoming move during the rest period as well, giving technique pointers throughout, so make sure you can see and hear your screen.</p><p>The session is designed to be accessible for all and is especially good if you’re trying to avoid too much impact on your joints during workouts, since you remain seated the whole time.</p><p>It’s also best done at a controlled pace — this isn’t one to rush through. Instead, focus on keeping moving throughout the working sets and engaging the right muscles with each move to challenge the target areas correctly.</p><p>To get the most out of short workouts like this, it's important to do them regularly. If you can do two or three short sessions a week, it will help you build and then maintain your strength and fitness.</p><p>Once you've spent a few weeks training with a chair, you might be able to move on to standing workouts. These are still low-impact and will help you to keep improving your strength and stability.</p><p>You can use your light dumbbell for this<a href="https://www.tomsguide.com/wellness/workouts/this-10-minute-standing-workout-is-perfect-for-improving-your-balance-and-stability-and-you-just-need-a-light-dumbbell-to-do-it"> 10-minute workout</a> if you are ready to try standing sessions. It's another accessible workout that helps to improve stability and balance, along with strengthening muscles all over the body.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/sit-all-day-try-these-7-back-exercises-from-a-physical-therapist-right-now" target="_blank">Sit all day? Try these 7 back exercises from a physical therapist right now</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=Fitness&view_mode=savings_squad&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 getTimeAgo(dateString) {        if (!dateString) return '';        const date = new Date(dateString);        const now = new Date();        const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);        if (diffInSeconds < 60) return 'Just now';        const diffInMinutes = Math.floor(diffInSeconds / 60);        if (diffInMinutes < 60) return `${diffInMinutes} min${diffInMinutes > 1 ? 's' : ''} ago`;        const diffInHours = Math.floor(diffInMinutes / 60);        if (diffInHours < 24) return `${diffInHours} hr${diffInHours > 1 ? 's' : ''} ago`;        const diffInDays = Math.floor(diffInHours / 24);        if (diffInDays < 30) return `${diffInDays} day${diffInDays > 1 ? 's' : ''} ago`;        const diffInMonths = Math.floor(diffInDays / 30);        if (diffInMonths < 12) return `${diffInMonths} mo${diffInMonths > 1 ? 's' : ''} ago`;        const diffInYears = Math.floor(diffInDays / 365);        return `${diffInYears} yr${diffInYears > 1 ? 's' : ''} ago`;      }      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%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      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-container {      position: relative;      width: 100%;      max-width: 800px;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }    @container tg-df (max-width: 768px) {      .tg-df-scroll-btn {        display: flex;        top: 22px; /* vertically center within the 44px high filter buttons */      }    }    .tg-df-filters {      display: grid;      width: 100%;      grid-template-columns: repeat(4, 1fr);      gap: 12px;      margin: 0 auto;      max-width: 800px;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;    }        .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 {      width: 100%;      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;    }    @container tg-df (max-width: 768px) {      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 800px;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }    @container tg-df (max-width: 768px) {      .tg-df-scroll-btn {        display: flex;        top: 22px; /* vertically center within the 44px high filter buttons */      }    }    .tg-df-filters {        width: 100%;        margin: 0;        margin-bottom: -320px;        padding: 0 16px 320px 16px;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .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);    }    .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;    }    /*       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: 120px;      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: 16px 16px 8px;      }            .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-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .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;      }      /* 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;        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;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .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: 14px;      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; }    .tg-df-grid-wrapper { position: relative; }    @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: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .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;    }    .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;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .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::-webkit-scrollbar {      display: none;    }    .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;      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 {    }    .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.40);        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: #1f69ff; 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: #0056e0; 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; }    .tg-df-savings-squad-header { margin-bottom: 24px; text-align: center; display: none; }    .tg-df-banner-img-desktop { display: block; width: 100%; height: auto; margin-bottom: 32px; }    .tg-df-banner-img-mobile { display: none; width: 100%; height: auto; margin-bottom: 32px; }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop { display: none; }      .tg-df-banner-img-mobile { display: block; }    }    .tg-df-header-title { font-size: 28px; font-weight: 700; color: var(--tg-df-text); margin: 32px 0 12px 0; line-height: 1.3; }    .tg-df-header-subtitle { font-size: 16px; color: var(--tg-df-text-muted); margin: 0 0 32px 0; line-height: 1.5; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3Cdiv class="tg-df-savings-squad-header" id="tg-df-savings-squad-header">      \x3Cpicture>        \x3Cimg src="https://cdn.mos.cms.futurecdn.net/flexiimages/xkh2og7m3d1778189998.png" alt="Deals Banner" class="tg-df-banner-img-desktop" />        \x3Cimg src="https://cdn.mos.cms.futurecdn.net/flexiimages/gmak6rtdf41778245089.png" alt="Deals Banner Mobile" class="tg-df-banner-img-mobile" />      \x3C/picture>      \x3Cdiv class="tg-df-header-text">        \x3Ch2 class="tg-df-header-title" id="tg-df-header-title">Editor's Choice Deals\x3C/h2>        \x3Cp class="tg-df-header-subtitle" id="tg-df-header-subtitle">Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.\x3C/p>      \x3C/div>    \x3C/div>    \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-carousel-cat" data-query="Televisions" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/wcMxTsHgqu3roMbAx7RLnT-132-100.png" alt="TVs" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">TVs\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Phones" data-pr="over50">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/G3KGaRGzj24F6PUsw4bWpT-132-100.png" alt="Phones" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Phones\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Computing" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/znNvsLzx8NEgNkD9HSFSnT-132-100.png" alt="Computing" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Computing\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Gaming" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/Pgew8yaRQeZFHqHjTzvBnT-132-100.png" alt="Gaming" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Gaming\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Mattresses" data-pr="over500">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/cW7xsaLyesxkHFVSiC4kmT-132-100.png" alt="Mattresses" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Mattresses\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Audio" data-pr="over30">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/pCvBVHuhaQVjKt3VgCjbqT-132-100.png" alt="Audio" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Audio\x3C/span>            \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>        \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-top-bar" id="tg-df-top-bar" style="position: relative; z-index: 100; margin: 0 auto 20px;">        \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>      \x3C/div>    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">              \x3Cdiv class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0 auto;">          \x3Cbutton class="tg-df-scroll-btn left" style="display: none;" onclick="this.parentElement.querySelector('.tg-df-filters').scrollBy({left: -200, behavior: 'smooth'})">            \x3Csvg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\x3Cpath d="M15 18l-6-6 6-6"/>\x3C/svg>          \x3C/button>          \x3Cbutton class="tg-df-scroll-btn right" style="display: none;" onclick="this.parentElement.querySelector('.tg-df-filters').scrollBy({left: 200, behavior: 'smooth'})">            \x3Csvg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\x3Cpath d="M9 18l6-6-6-6"/>\x3C/svg>          \x3C/button>          \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 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/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();        }        getViewMode() {          console.log("DEBUG getViewMode -> override:", this.viewModeOverride, "editorMode:", this.editorMode);          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();          console.log("[DEBUG] applyLayoutMode CALLED! mode=", mode);          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');          const topBarDiv = this.root.querySelector('#tg-df-top-bar');          const headerElement = this.root.querySelector('#tg-df-savings-squad-header');          if (headerElement) {             headerElement.style.display = mode === 'savings_squad' ? 'block' : 'none';          }          if (mode === 'carousel') {             this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (topBarDiv) topBarDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.add('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (topBarDiv) topBarDiv.style.display = 'block';             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 (!this.viewModeOverride && initialViewMode) {            this.viewModeOverride = initialViewMode;          }          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Gaming laptops';          }          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 { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button: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 (this.viewModeSelect && params.has('view_mode')) {            this.viewModeSelect.value = 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') || 'date_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }          const headerTitleEl = this.root.querySelector('#tg-df-header-title');          const headerSubtitleEl = this.root.querySelector('#tg-df-header-subtitle');          if (params.has('widget_title') && headerTitleEl) {             headerTitleEl.textContent = params.get('widget_title');          }          if (params.has('widget_subtitle') && headerSubtitleEl) {             headerSubtitleEl.textContent = params.get('widget_subtitle');          }                    // 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) {            if (this.getViewMode() === 'savings_squad') {              this.searchInput.value = '';            } else {              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 !== 'date_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 handleFiltersScroll = () => {            const filters = this.root.querySelector('.tg-df-filters');            const leftBtn = this.root.querySelector('.tg-df-scroll-btn.left');            const rightBtn = this.root.querySelector('.tg-df-scroll-btn.right');            if (filters && leftBtn && rightBtn) {              const { scrollLeft, scrollWidth, clientWidth } = filters;              leftBtn.style.display = scrollLeft > 0 ? 'flex' : 'none';              rightBtn.style.display = Math.ceil(scrollLeft + clientWidth) < scrollWidth - 5 ? 'flex' : 'none';            }          };          const filters = this.root.querySelector('.tg-df-filters');          if (filters) {            filters.addEventListener('scroll', handleFiltersScroll);            window.addEventListener('resize', handleFiltersScroll);            setTimeout(handleFiltersScroll, 100);                        // Also call after rendering dropdowns            const origRenderCategories = this.renderCategories;            if (origRenderCategories) {               this.renderCategories = (...args) => {                 origRenderCategories.apply(this, args);                 setTimeout(handleFiltersScroll, 50);               };            }          }                const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');          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');              }            });          }          const showAutocomplete = () => {             if (this.getViewMode() !== 'savings_squad' || !this.autocompleteDropdown || !this.airedaleTags) return;                          let terms = this.airedaleTags;             if (this.airedaleBrands) {                terms = terms.concat(this.airedaleBrands.map(b => b.formatted_value));             }             terms = [...new Set(terms)];                          const query = this.searchInput.value.trim();             let matches = [];             if (query.length > 0) {                 matches = terms.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase());             } else {                 matches = terms;             }                          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');             }          };          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('focus', showAutocomplete);            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              showAutocomplete();              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  if (this.getViewMode() === 'savings_squad') {                    this.activeDealTag = null;                    this.currentQuery = '';                    if (this.categoryFilter) this.categoryFilter.value = 'all';                    this.fetchDeals('');                  } else {                    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;                                let isTag = false;                if (this.airedaleTags && this.airedaleTags.includes(query)) isTag = true;                if (this.airedaleBrands && this.airedaleBrands.some(b => b.formatted_value === query)) isTag = true;                this.activeDealTag = isTag ? query : null;                                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   if (query.length === 0 && this.getViewMode() === 'savings_squad') {                       if (this.categoryFilter) this.categoryFilter.value = 'all';                   }                   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;                   if (this.categoryFilter && this.airedaleTags.includes(tag)) {                       this.categoryFilter.value = 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 });                            let isTag = false;              if (this.airedaleTags && this.airedaleTags.includes(query)) isTag = true;              if (this.airedaleBrands && this.airedaleBrands.some(b => b.formatted_value === query)) isTag = true;              this.activeDealTag = isTag ? query : null;                            this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 if (query.length === 0 && this.getViewMode() === 'savings_squad') {                     if (this.categoryFilter) this.categoryFilter.value = 'all';                 }                 this.fetchDeals(query);              }            });          }          if(this.sortSelect && this.sortSelect.querySelector('option[value="date_desc"]') === null) {              const option = document.createElement('option');              option.value = "date_desc";              option.text = "Newest First";              this.sortSelect.insertBefore(option, this.sortSelect.firstChild);          }          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;               if (val) {                 this.currentQuery = val;               } else {                 if (this.searchInput && this.currentQuery === document.querySelector('#tg-df-brand-trigger')?.getAttribute('data-active-brand')) {                     // don't clear current query if a brand is selected                 } else if (this.searchInput) {                     this.currentQuery = '';                     this.searchInput.value = '';                 }               }               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 = 'date_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        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 fetchDeals(query) {          this.showLoading();          this.deals = [];          this.displayLimit = (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;                    try {            console.log("getViewMode returns:", this.getViewMode());            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad();            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query);               } else {                 await this.fetchHawkDeals(query);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query);                 }               }            }          } 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_1781000519267.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 && this.currentQuery) {             const tagMatch = this.airedaleTags.find(t => t.toLowerCase() === this.currentQuery.toLowerCase());             if (tagMatch) {                this.activeDealTag = tagMatch;             }          }          if (this.activeDealTag) {             const encodedTag = encodeURIComponent(this.activeDealTag.toLowerCase().replace(/\s+/g, '-'));             const url = `https://airedale.futurecdn.net/feeds/feed_1781000519267.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 seenUrls = new Set();                    let overallBrandsCounts = {};                    // First pass: extract ALL brands from topArticles so the dropdown has all options          topArticles.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) => {                const data = block.data || {};                if (data.brand) {                   const cleanBrand = data.brand.replace(/^\d+\.\s*/, '').trim();                   overallBrandsCounts[cleanBrand] = (overallBrandsCounts[cleanBrand] || 0) + 1;                }             });          });          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();                }                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;                   }                }                                if (externalUrl) {                   if (seenUrls.has(externalUrl)) return;                  seenUrls.add(externalUrl);                }                                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 || '',                   authorName: article.articleauthortext ? article.articleauthortext[0] : (article.articleauthor ? article.articleauthor[0] : ''),                   authorRole: article.articleauthorrole ? article.articleauthorrole[0] : '',                   authorImage: article.articleauthormedia ? article.articleauthormedia[0] : '',                   documentUrl: article.documenturl ? article.documenturl[0] : '',                   modifiedDate: article.contentmodifieddate || article.modifieddate || ''                });             });          });                    const airedaleBrandsList = Object.keys(overallBrandsCounts).map(b => ({              formatted_value: b,              count: overallBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    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');                    if (this.rowsSelect && this.rowsSelect.value) {            url.searchParams.append('rows', this.rowsSelect.value);          } else {             url.searchParams.append('rows', '12'); // default          }          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = 12;          if (this.rowsSelect && this.rowsSelect.value) {            rowLimit = parseInt(this.rowsSelect.value, 10) || 12;          }          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : 'date_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}                ${_div}              ${_div}              \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin:0; border-radius:0;">${_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 => {              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}`;                }              }              return `                \x3Ca href="${this.escapeHTML(linkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item">                  ${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);                }              });            });                                  } 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)}${_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 = 'View Deal';              if (isSavingsSquadMode) {                priceGroupHtml = ``;              } else {                priceGroupHtml = `                  \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 = isSavingsSquadMode ? `` : `                \x3Cdiv class="tg-df-card-price-group">                  \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 = `              \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 tg-df-card-desc-container" style="margin-bottom: 12px; position: relative;">                          \x3Cp class="tg-df-card-desc-content" style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${this.escapeHTML(deal.description)}${_p}                          \x3Cbutton type="button" class="tg-df-card-desc-btn" style="display: none; appearance: none; border: none; color: #000000; font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0; background: linear-gradient(to right, transparent, #fff 20%, #fff); padding: 0 0 0 16px;" onclick="                            var c = this.parentNode;                            if (this.dataset.expanded === 'true') {                              var pd = (c.tagName === 'P') ? c : this.previousElementSibling;                              if (c.tagName === 'P') { c.parentNode.appendChild(this); pd = c; }                              pd.style.display = '-webkit-box';                              pd.style.webkitLineClamp = '3';                              this.textContent = 'READ MORE';                              this.style.position = 'absolute';                              this.style.background = 'linear-gradient(to right, transparent, #fff 20%, #fff)';                              this.style.paddingLeft = '16px';                              this.dataset.expanded = 'false';                            } else {                              var pd = this.previousElementSibling;                              pd.style.display = 'inline';                              pd.style.webkitLineClamp = 'unset';                              this.textContent = 'READ LESS';                              this.style.position = 'static';                              this.style.background = 'transparent';                              this.style.paddingLeft = '4px';                              this.dataset.expanded = 'true';                              pd.appendChild(this);                            }                          ">READ MORE${_button}                        \x3C/div>` : ''}                      ${_div}                    ${_div}                    ${deal.authorName ? `                      \x3Cdiv class="tg-df-author-line-mobile" style="padding: 0 0 12px 0; background: transparent;">                         \x3Cdiv style="display: flex; align-items: center; gap: 12px;">                            ${deal.authorImage ? `\x3Cimg src="${this.escapeHTML(deal.authorImage)}" alt="${this.escapeHTML(deal.authorName)}" class="tg-df-author-img" width="40" height="40" style="border-radius: 50%; object-fit: cover;">` : ''}                            \x3Cdiv style="display: flex; flex-direction: column;">                               \x3Cdiv style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;">\x3Cspan style="color: #FF6600;">${this.escapeHTML(deal.merchant)}${_span} deal recommended by:${_div}                               \x3Cdiv style="font-size: 11px; color: var(--tg-df-text); line-height: 1.3;">                                  \x3Cstrong>\x3Ca href="https://www.tomsguide.com/${this.escapeHTML(deal.documentUrl || '').replace(/^\/+/, '')}" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">${this.escapeHTML(deal.authorName)}${_a}${_strong}                                  ${deal.authorRole && !['null', 'nul', 'undefined'].includes(String(deal.authorRole).toLowerCase()) ? ` • ${this.escapeHTML(deal.authorRole)}` : ''}                                  ${deal.modifiedDate ? `\x3Cdiv style="color: var(--tg-df-text-muted); margin-top: 2px;">${getTimeAgo(deal.modifiedDate)}${_div}` : ''}                               ${_div}                            ${_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>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}                  \x3Cdiv class="tg-df-card-merchant-wrapper" style="position: absolute; bottom: 0; right: 0; background: transparent; padding: 8px 12px; z-index: 10;">                     \x3Cspan class="tg-df-card-merchant-pill" style="text-align: right; margin-bottom: 0;" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cdiv class="tg-df-card-desc-container" style="margin-bottom: 12px; position: relative;">                    \x3Cp class="tg-df-card-desc-content" style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${this.escapeHTML(deal.description)}${_p}                    \x3Cbutton type="button" class="tg-df-card-desc-btn" style="display: none; appearance: none; border: none; color: #000000; font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0; background: linear-gradient(to right, transparent, #fff 20%, #fff); padding: 0 0 0 16px;" onclick="                      var c = this.parentNode;                      if (this.dataset.expanded === 'true') {                        var pd = (c.tagName === 'P') ? c : this.previousElementSibling;                        if (c.tagName === 'P') { c.parentNode.appendChild(this); pd = c; }                        pd.style.display = '-webkit-box';                        pd.style.webkitLineClamp = '3';                        this.textContent = 'READ MORE';                        this.style.position = 'absolute';                        this.style.background = 'linear-gradient(to right, transparent, #fff 20%, #fff)';                        this.style.paddingLeft = '16px';                        this.dataset.expanded = 'false';                      } else {                        var pd = this.previousElementSibling;                        pd.style.display = 'inline';                        pd.style.webkitLineClamp = 'unset';                        this.textContent = 'READ LESS';                        this.style.position = 'static';                        this.style.background = 'transparent';                        this.style.paddingLeft = '4px';                        this.dataset.expanded = 'true';                        pd.appendChild(this);                      }                    ">READ MORE${_button}                  \x3C/div>` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${deal.authorName ? `                    \x3Cdiv class="tg-df-author-line-desktop" style="padding: 0 0 ${isSavingsSquadMode ? 0 : 12}px 0;">                       \x3Cdiv style="display: flex; align-items: center; gap: 10px;">                          ${deal.authorImage ? `\x3Cimg src="${this.escapeHTML(deal.authorImage)}" alt="${this.escapeHTML(deal.authorName)}" class="tg-df-author-img" width="36" height="36" style="border-radius: 50%; object-fit: cover;">` : ''}                          \x3Cdiv style="display: flex; flex-direction: column;">                             \x3Cdiv style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;">Recommended by:${_div}                             \x3Cdiv style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;">                                \x3Cstrong>\x3Ca href="https://www.tomsguide.com/${this.escapeHTML(deal.documentUrl || '').replace(/^\/+/, '')}" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">${this.escapeHTML(deal.authorName)}${_a}${_strong}                                ${deal.authorRole && !['null', 'nul', 'undefined'].includes(String(deal.authorRole).toLowerCase()) ? ` • ${this.escapeHTML(deal.authorRole)}` : ''}                                ${deal.modifiedDate ? `\x3Cspan style="color: var(--tg-df-text-muted);"> • ${getTimeAgo(deal.modifiedDate)}${_span}` : ''}                             ${_div}                          ${_div}                       ${_div}                    ${_div}                    ` : ''}                    ${priceGroupHtml}                  ${_div}                ${_div}                \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta" style="text-decoration: none; border-radius: 0;">${ctaText}${_a}              ${_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) {            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;">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); }          setTimeout(() => {            const contents = this.root.querySelectorAll('.tg-df-card-desc-content');            contents.forEach(p => {              if (p.scrollHeight > p.clientHeight || p.scrollHeight > 60) {                if (p.nextElementSibling) {                  p.nextElementSibling.style.display = 'block';                }              }            });                        // 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');            }            if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');            if (!this.processArticleFired) {                  this.processArticleFired = true;                  document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));               }          }, 50);          const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              this.displayLimit += 12;              this.render();            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tried Dua Lipa’s go-to 20-minute mat Pilates routine — and my abs still haven't recovered ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-tried-one-of-dua-lipas-20-minute-mat-pilates-classes-and-it-blasted-my-abs-in-just-6-exercises</link>
                                                                            <description>
                            <![CDATA[ Our fitness editor unrolled her exercise mat, grabbed a Pilates ball, and gave this workout a go ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">uxZjqYwhoSdFbWr9QxA2Wd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sxbmUtGZMpG4LxUQchNs2g-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 25 Jun 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 25 Jun 2026 10:54:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/sxbmUtGZMpG4LxUQchNs2g-1280-80.jpg">
                                                            <media:credit><![CDATA[Instagram/DuaLipa/JaneMcGuire]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of Dua Lipa ]]></media:description>                                                            <media:text><![CDATA[a photo of Dua Lipa ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of Dua Lipa ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sxbmUtGZMpG4LxUQchNs2g-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ll never be able to sing like Dua Lipa, but getting her abs has become a lifetime goal. The global star frequently posts about her workouts, and luckily for me, they are pretty easy to find, as Dua has co-founded a Pilates-based training platform named <a href="https://www.instagram.com/framereformer/?g=5" target="_blank" rel="nofollow">Frame Fitness</a>, designed to make reformer Pilates more accessible. </p><p>“The one thing that keeps me grounded and keeps me fit is getting on the mat every single day,’ she told <a href="https://www.tiktok.com/@voguemagazine/video/7552283144293059853?lang=en" target="_blank" rel="nofollow"><em>Vogue</em></a>. "That’s doing Pilates, that’s doing yoga – the good thing about the Frame Reformer is that, even when I’m traveling, I can do the mat stuff.”</p><p>Taking a leaf out of Dua’s workout book, I unrolled my mat and gave this 20-minute mat Pilates class a go. Warning: it blasted my core in just six exercises. Read on to find out more. </p><p>As a reminder, if you’re a complete beginner, you’re pregnant or postpartum, or you’re recovering from an injury, this might not be the workout for you. It’s always worth checking in with a qualified professional before trying something new. </p><h2 id="what-is-the-workout">What is the workout? </h2><p>The workout is designed by Frame Fitness instructor Melissa Lynn. It’s a full-body workout that only takes 20 minutes to complete. You will need some extra equipment: a Pilates ball, a pair of ankle weights and a pair of wrist weights to add instability and intensity. </p><p>Here are some of the best deals on Pilates equipment to grab this Prime Day: </p><div class="product"><a data-dimension112="5f5d4bc6-fcd6-40fe-a506-13ffa5ce6c5f" data-action="Deal Block" data-label="This Pilates ball is on sale for Prime Day, and will add instability to your workouts, helping really activate those deep core muscles." data-dimension48="This Pilates ball is on sale for Prime Day, and will add instability to your workouts, helping really activate those deep core muscles." data-dimension25="$7" href="https://www.amazon.com/Trideer-Exercise-Training-Stability-Stretching/dp/B0B4C1MZC3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:100.15%;"><img id="gsphNrZxripa9FHQuZVQtN" name="71DF0Bq5O7L._AC_SX679_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gsphNrZxripa9FHQuZVQtN.jpg" mos="" align="middle" fullscreen="" width="679" height="680" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This Pilates ball is on sale for Prime Day, and will add instability to your workouts, helping really activate those deep core muscles.<a class="view-deal button" href="https://www.amazon.com/Trideer-Exercise-Training-Stability-Stretching/dp/B0B4C1MZC3" target="_blank" rel="nofollow" data-dimension112="5f5d4bc6-fcd6-40fe-a506-13ffa5ce6c5f" data-action="Deal Block" data-label="This Pilates ball is on sale for Prime Day, and will add instability to your workouts, helping really activate those deep core muscles." data-dimension48="This Pilates ball is on sale for Prime Day, and will add instability to your workouts, helping really activate those deep core muscles." data-dimension25="$7">View Deal</a></p></div><div class="product"><a data-dimension112="1adbbb5a-fe34-42fb-9756-3911cf996e24" data-action="Deal Block" data-label="These beautiful bangles can be worn around the wrist or the ankles to add intensity to your Pilates workouts." data-dimension48="These beautiful bangles can be worn around the wrist or the ankles to add intensity to your Pilates workouts." data-dimension25="$41" href="https://www.amazon.com/Bala-Bangles-Ankle-Weights-Wrist-Workout-Men-Women/dp/B09SNTB8DF/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1465px;"><p class="vanilla-image-block" style="padding-top:102.39%;"><img id="CnFewGYxQcCh52GEdWxHUW" name="Bala bangles" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CnFewGYxQcCh52GEdWxHUW.jpg" mos="" align="middle" fullscreen="" width="1465" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>These beautiful bangles can be worn around the wrist or the ankles to add intensity to your Pilates workouts.<a class="view-deal button" href="https://www.amazon.com/Bala-Bangles-Ankle-Weights-Wrist-Workout-Men-Women/dp/B09SNTB8DF/" target="_blank" rel="nofollow" data-dimension112="1adbbb5a-fe34-42fb-9756-3911cf996e24" data-action="Deal Block" data-label="These beautiful bangles can be worn around the wrist or the ankles to add intensity to your Pilates workouts." data-dimension48="These beautiful bangles can be worn around the wrist or the ankles to add intensity to your Pilates workouts." data-dimension25="$41">View Deal</a></p></div><p>There are six different exercises in total. Do each exercise for 40 seconds, followed by a 20-second break. Doing a full set (including switching sides) should take you 10 minutes. Repeat the circuit for a bodyweight workout in 20 minutes. </p><p>Here are the exercises: </p><ul><li><strong>Side plank and pulse on ball:</strong> Start in a side plank position, resting on your elbows with your knees stacked, and press your top hand into your Pilates ball. Lift your hips to form a straight line from your head to your knees. As you reach your hips toward the ceiling, press down into the ball, then lower with control. Complete 40 seconds on one side before switching to the other.</li><li><strong>Side plank and pulse on the ball with leg extension: </strong>This exercise follows the same sequence as above, but as you press into the ball and raise your hips, extend your top leg out diagonally towards the ceiling, then bend your knee and bring your legs back together. Lower down into your side plank and repeat.</li><li><strong>Ball ab crunch:</strong> Place the Pilates ball under your bra strap (or mid-back) and brace your core, curling your head, neck and shoulders up off the ball. Keep your arms in line with your shoulders extended out in front of you. Keep your abs braced throughout, sucking your belly button in towards your spine.</li><li><strong>Oblique crunch hold with leg lift:</strong> This exercise works the obliques. To do it, place the Pilates ball against one knee, and raise your head, neck and shoulders to use the opposite elbow to hold the ball in place. Extend the opposite leg away and repeatedly lift and lower your leg. Complete 40 seconds on one side before switching to the other.</li><li><strong>Oblique teaser: </strong>Start by resting on one side, and in one movement, lift your torso and legs into a side V-sit. Holding the Pilates ball in your top hand, extend it overhead and as you crunch, bring your top arm up so the ball meets your feet. Lower with control and repeat. Complete 40 seconds on one side before switching to the other.</li><li><strong>Reverse lunges:</strong> Place the Pilates ball under your front foot, and step the other back into a split stance. Lower into a lunge, making sure your front knee stays over your ankle. Drive through your front heel to return to your starting position. Complete 40 seconds on one side before switching to the other.</li></ul><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/DWZRdDNAP0I/" target="_blank">A post shared by FRAME FITNESS (@framereformer)</a></p><p>A photo posted by  on </p></blockquote></div><h2 id="what-are-the-benefits-2">What are the benefits?</h2><p>This workout is no joke. With the additional instability of the Pilates ball, the deep stabilizer muscles in your core are working hard to stabilize your body as you crunch, lunge, lift and lower your legs. </p><p>As with all Pilates exercises, it’s important to move slowly and with complete control — I had to really think about keeping my core engaged throughout, squeezing my belly button into my spine and keeping my abs zipped up and in. </p><p>All of these exercises target the muscles in your core, including the deep lower abs, lower back stabilizers, glutes and pelvic floor. These deep muscles act as your body’s internal corset, protecting your spine and drastically improving your overall balance and stability. </p><p>Exercises like the reverse lunges and side planks can also help address and correct muscle imbalances, as you’ll be working one side of the body at a time. As a marathon runner who spends most of her day sitting behind a desk, my left side is much weaker than my right, and I could feel this straight away. Pilates places an immense focus on alignment, and workouts like this can help correct imbalances and improve your posture.</p><p>Of course, my abs looked the same after this 20-minute workout, but I really felt it in my core. To get Dua Lipa’s abs, you’d have to pair workouts like this with a balanced diet, enough water and a low-impact form of daily cardio like walking, as visible abs are down to your <a href="https://www.tomsguide.com/wellness/fitness/body-fat-percentage-vs-body-fat-mass-experts-say-this-is-what-you-need-to-know-to-lose-fat">overall body fat percentage</a>, not how many oblique teasers you can do. </p><p>Either way, this is a great workout, and one I’ll be repeating (while listening to Levitating, of course). </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.js" async></script><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><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40" target="_blank">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've been lifting weights for years, but this 3-move ab workout completely humbled me ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-and-these-3-moves-torch-your-abs-and-build-muscle-using-one-dumbbell</link>
                                                                            <description>
                            <![CDATA[ You just need these three moves and a dumbbell to build your deep core and abs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TBbMNTBMwjrh9wY3NEwFDb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KbU4pxgWsiCFDkEGYupQFa-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 25 Jun 2026 05:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 25 Jun 2026 13:40:02 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KbU4pxgWsiCFDkEGYupQFa-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman with toned abs punching to camera in gym with dumbbells in hands]]></media:description>                                                            <media:text><![CDATA[Woman with toned abs punching to camera in gym with dumbbells in hands]]></media:text>
                                <media:title type="plain"><![CDATA[Woman with toned abs punching to camera in gym with dumbbells in hands]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KbU4pxgWsiCFDkEGYupQFa-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We're all pretty time-poor these days, so saving a trip to the gym to roll out your mat at home is a great solution, but it's not always easy to find ab workouts you can depend on if you want to build a strong core with minimal equipment.</p><p>Before you turn to the pretty boring bank of sit-ups, crunches, or <a href="https://www.tomsguide.com/how-to/do-a-russian-twist-exercise">Russian twists</a>, I strongly recommend giving my three-move core workout a try instead. You only need a dumbbell (the <a href="https://www.tomsguide.com/best-picks/best-adjustable-dumbbells">best adjustable dumbbells </a>will give you more wiggle room) and roughly 15 minutes. It fits nicely onto the end of any leg or upper-body workout as a neat finisher to round off your hard work, plus it torches your abs and deep core.</p><p>Watch how to do this dumbbell abs workout step-by-step. </p><h2 id="watch-3-move-dumbbell-workout-for-home">Watch: 3-move dumbbell workout for home</h2><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/DZ9vxk7FaDF/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Complete two reps of each combination movement (there are three combos), then increase to four on the next round and so on. For beginners, aim to reach 10 reps per combo, then go back down the ladder again. For experienced exercisers, aim for 20. </p><p>Your core muscles help stabilize your trunk and pelvis, which means your body becomes better able to deal with balance, coordination, movement and injury. Always engage your core by drawing your navel up and in toward your spine while bracing down and directing your breath down and out. This encourages belly breathing, which engages the diaphragm, rather than reducing your breath to your chest, which is limiting.</p><div><blockquote><p>Your core muscles help stabilize your trunk and pelvis, which means your body becomes better able to deal with balance, coordination, movement and injury. </p></blockquote></div><p>During this workout, you'll focus on engaging and strengthening multiple core muscles, including your abs, obliques and other deeper stabilizing muscles like the transverse abdominis, as you hold, crunch and rotate your way through. </p><p>Your abs are commonly referred to as the six-pack muscles, which run along the front of your stomach and give people muscle definition. Typically they're targeted during exercises like sit-ups, but we don't want to limit the body to only targeting these muscles.</p><p>That's why we add twisting or lateral movement to focus on the lesser-known obliques — a group of superficial (external) and deeper (internal) muscles along the waist that aid rotation and lateral movement, plus the deeper stabilizing muscles responsible for protecting your spine and pelvis.</p><h3 class="article-body__section" id="section-why-does-this-workout-work"><span>Why does this workout work?</span></h3><p>If you constantly bang out 100s of sit-ups and crunches, you're really only strengthening a particular group of muscles, which means creating potential imbalances or weaknesses elsewhere.</p><p>I like to program workouts to work in all <a href="https://www.tomsguide.com/wellness/fitness/what-are-the-3-planes-of-motion-for-exercise-and-why-do-they-matter">planes of motion</a>, which means I have clients sitting, kneeling, standing, lying, rotating, crawling, holding, moving, not moving and everything in between. </p><p>That's how you target as many different muscle groups as possible to build true strength, endurance, posture and stability.</p><p>That said, growing muscle comes from stimulus and consistency, so remember to increase the intensity or volume of training as your body adapts. Either repeat this workout several times per week or mix the exercises into any existing routine that you follow.</p><div><blockquote><p> Growing muscle comes from stimulus and consistency.</p></blockquote></div><p>Lastly, remember that control and range of motion are everything; try not to rush reps, even when it feels super spicy and challenging. Come back to your breath and focus on the quality of your reps over quantity. That might mean you even reduce your working sets or increase rest breaks at first, which is better than losing form and hurting yourself. Listen to your body, and stop if necessary. </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><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/DWvhgVoEaf5/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-toms-s-guide"><span>More from Toms's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/news/5-best-kettlebell-exercises-for-beginners-to-build-muscle-and-strength" target="_blank">5 best kettlebell exercises for beginners to build muscle and strength</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-sit-ups-im-a-personal-trainer-and-i-use-shoot-throughs-to-build-strong-abs-and-obliques-instead" target="_blank">Stop doing 100s of sit-ups: I'm a personal trainer, and I use 'shoot-throughs' to build strong abs and obliques instead</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/you-dont-need-the-gym-to-build-strength-try-this-10-minute-kettlebell-workout-instead" target="_blank">You don’t need the gym to build strength, try this 10-minute kettlebell workout instead</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ According to a personal trainer, this exercise is 100 times more effective than crunches. I tried it and was humbled ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/according-to-a-personal-trainer-this-exercise-is-100-times-more-effective-than-crunches-i-tried-it-and-was-humbled</link>
                                                                            <description>
                            <![CDATA[ This move builds functional strength in your core: here's how to do it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LeN8qaQRsetjwQC3XVCEGW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/E2U8RmmcP9wVUbiUXkk8V3-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 07:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 24 Jun 2026 16:17:57 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/E2U8RmmcP9wVUbiUXkk8V3-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock/Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman doing a bear plank and fitness editor Jane McGuire ]]></media:description>                                                            <media:text><![CDATA[a photo of a woman doing a bear plank and fitness editor Jane McGuire ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman doing a bear plank and fitness editor Jane McGuire ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/E2U8RmmcP9wVUbiUXkk8V3-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When you think about ab workouts, chances are your brain will immediately think of endless sit-ups and crunches, lying prone on your exercise mat. While both exercises do a great job of working the six-pack muscles along the front of your core, they aren’t the best at building <a href="https://www.tomsguide.com/features/what-is-functional-training">functional fitness</a>, as you probably don’t find yourself lying on your back and crunching much in your day-to-day life.</p><p>This is why strength and run coach Melissa Kendter wants you to swap the exercise for the bear plank pull-through. “Reminding women this exercise is 100x more effective than crunches,” she writes on <a href="https://www.instagram.com/reels/DYpNBaCOgAC/" target="_blank" rel="nofollow">Instagram</a>. </p><p>“Crunches train your abs in isolation. Bear plank pull-throughs train your core the way we actually use it,” she adds. As a female runner myself, I added this powerhouse ab exercise to my strength training routine for a month — read on to find out what happened next. </p><p><em>As a reminder, if you’re a complete beginner, you’re recovering from an injury, or you’re pregnant or postpartum, it’s always best to seek personalized advice from a qualified professional. </em></p><h2 id="how-to-do-a-bear-plank-pull-through">How to do a bear plank pull-through </h2><p>All you’ll need for this exercise is a weight of some kind. You can check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a> for your home workouts here, or you can use anything heavy, like a book or a milk carton. </p><p>In her video demonstration, Kendter is using a kettlebell. Remember, the right weight for you will feel challenging, but not impossible, by the final few reps.</p><p><strong>Here’s how to do the bear plank pull-through with good form: </strong></p><ul><li>Place a heavy dumbbell or kettlebell to one side of you, and start on all fours. Make sure your wrists are stacked underneath your shoulders, and your knees are in line with your hips.</li><li>Squeeze your core, thinking about sucking your belly button into your spine, and push through your hands to raise into a bear plank, hovering your knees a few inches from the floor.</li><li>Check your form: your hips should be completely still, and your back should be straight. Imagine you have a drink balanced on the small of your back — it shouldn’t spill.</li><li>Reach under and across your body with the opposite hand to grab the weight and drag it underneath your body while staying lifted in the bear plank. Repeat on the opposite side.</li><li>Keep switching sides until you have completed the same number of reps on each side.</li></ul><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/DYpNBaCOgAC/" target="_blank">A post shared by MELISSA KENDTER (@melissa_kendter)</a></p><p>A photo posted by  on </p></blockquote></div><h2 id="what-are-the-benefits-3">What are the benefits? </h2><p>You’re getting a lot of bang for your buck with this move. “As a runner (and honestly for women in general), this move is 100x more functional because it builds deep core stability, hip and shoulder strength, anti-rotation control, balance and coordination, better posture when fatigued, and pelvic/core connection without endless crunches,” says Kendter. </p><div><blockquote><p>I’ve run six marathons, and I do Pilates a few times a week, so I thought this move would be easy. I was wrong. </p></blockquote></div><p>If you think about your posture as you run and walk, you aren’t in a crunch. Instead, your core has to work to stabilize your pelvis and resist rotation as you move, helping you stay balanced and run more efficiently. </p><p>This is an elite anti-rotation exercise that challenges your core by firing up your obliques and deep transverse abdominis to keep your body stable as you move. You’ll also be challenging your glutes and shoulders, as well as your quads, to keep you stable in the isometric hold.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4dAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4dAX.js" async></script><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2120px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="bSQGDiwoLcXZP86D9LmkaD" name="bear plank getty.jpg" alt="a photo of a woman doing a bear plank" src="https://cdn.mos.cms.futurecdn.net/bSQGDiwoLcXZP86D9LmkaD.jpg" mos="" align="middle" fullscreen="" width="2120" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty/Luca Sage)</span></figcaption></figure><h2 id="i-added-this-move-to-my-routine-for-a-month-and-was-humbled">I added this move to my routine for a month, and was humbled  </h2><p>I was humbled by this exercise. I’ve run six marathons, and I do Pilates a few times a week, so I thought this move would be easy. I was wrong. I had to really focus on keeping my hips steady as I dragged my dumbbell underneath my torso while holding the bear plank. I found I had to do five reps on each side before stopping to drop my knees down to the floor and reset to ensure I was moving with good form.</p><p>I spend a lot of time sitting down behind my desk, and have sciatica, so a tight lower back is a common occurrence. I often struggle to keep my hips level in traditional planks, but the bent-knee setup of the bear plank made it easier for me to ensure my back was flat. </p><p>Over the course of this challenge, the deep core shake I got throughout this exercise didn’t subside, although I definitely improved my form. Of course, my abs look the same — visible abs are the result of a low body fat percentage, not endless bear planks, but my deep core feels stronger, and I found I could really think about engaging my abs on the run. Give this one a go. You won’t regret it. </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><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/DZ5LtHionbs/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40" target="_blank">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tried this 3-move mobility routine using my dog instead of dumbbells. Here's what happened ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-tried-this-3-move-mobility-routine-using-my-dog-instead-of-dumbbells-heres-what-happened</link>
                                                                            <description>
                            <![CDATA[ These three mobility exercises can be done with any equipment to improve balance, strength and stability, so I tested them with my dog. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Pg5CWReZGAUWifR7sCLB8A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5jz2QKXd8Pg9W9dEWkhAUQ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5jz2QKXd8Pg9W9dEWkhAUQ-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman sitting on an exercise mat with her dog during workout]]></media:description>                                                            <media:text><![CDATA[Woman sitting on an exercise mat with her dog during workout]]></media:text>
                                <media:title type="plain"><![CDATA[Woman sitting on an exercise mat with her dog during workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5jz2QKXd8Pg9W9dEWkhAUQ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Recently, I had a random thought: what if I swapped dumbbells for my dog during workouts? So, ever curious to try new things with my training, I gave it a try.</p><p>I didn't think Mobie (that's my dog) would appreciate anything high-intensity, but a three-move mobility routine felt like a great place to start, as mobility combines strength and control (with or without load) to improve balance, stability, and range of motion in the body.</p><p>Mobie weighs 5kg (roughly 11lbs), so I knew I'd be able to perform some of the <a href="https://www.tomsguide.com/wellness/fitness/forget-tight-hips-try-these-5-mobility-moves-to-unlock-stiff-hips-and-build-stronger-glutes">best mobility exercises</a> I know using her safely. I like to perform mobility routines at least twice per week, as this helps me not only build but maintain results, so I repeated this several times, keeping the sets and reps consistent each time.</p><p>If you're keen to find out what happened, I documented it below and show you how to try it for yourself.</p><p><em>If you experience pain at any time, stop and rest. If you're working with an injury or health condition, or you're currently pregnant or postnatal, I recommend seeking advice before starting these exercises.</em></p><h2 id="watch-3-move-mobility-routine">Watch: 3-move mobility routine</h2><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/DZ5LtHionbs/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>The goal with any mobility routine is to protect the body against injury and the natural decline in strength, balance, and stability that comes with aging. Call it a longevity routine, if you will. </p><p>This is also important for maintaining healthy fascia, a web of connective tissue that helps hold everything together, like your bones, muscles, and organs. Tight fascia increases friction, and mobility work helps reduce this using movement.</p><p><strong>The routine:</strong> You'll need one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats </a>and time<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> </a>to complete 3-4 sets and 8-10 reps.</p><ul><li><strong>Wide-leg lifts: </strong>Sit upright with your legs wide apart until you feel a stretch down the inner thighs. Sit tall with your spine long and core braced, shoulders relaxed. Place something (or someone!) inside of your right foot at a challenging height setting. With control, lift your foot up and over to the other side, then back again. Complete reps on one side, then swap to the other leg.</li><li><strong>Cossack squats: </strong>Stand with your feet hip-width apart, core engaged, and hold a weight to your chest. Take a big step to the right side with your right leg, toes pointed forward, and bend the knee to lower into a lunge. Keep your back straight and chest lifted, lowering as far as you can. Pause, then drive up through your legs and step to standing. Repeat on the other side.</li><li><strong>Windshield wiper hip extensions: </strong>Sit with your legs bent at 90 degrees, similar to a <a href="https://www.tomsguide.com/wellness/fitness/i-did-the-90-90-hip-stretch-for-a-week-and-my-mobility-improved-in-a-way-i-didnt-expect">90-90 stretch position</a>, and hold a weight to your chest. Keep your spine long and core engaged. Sweep your knees over to the opposite side, then lift your hips and butt into the air and squeeze your glutes. Pause, then carefully lower to the ground and sweep your knees in the opposite direction. Continue alternating.</li></ul><h2 id="what-are-the-benefits-4">What are the benefits?</h2><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="fiSCshiuHD6XQyfoQ7V6hR" name="90-90" alt="90-90 hip stretch performed on a yoga mat" src="https://cdn.mos.cms.futurecdn.net/fiSCshiuHD6XQyfoQ7V6hR.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Each of these exercises is beneficial for lower-body mobility, core stability and healthy hips.</p><p><strong>Wide-leg lifts:</strong> This is an effective hip flexor strengthener, as you must lift and lower your leg with control. You don't need to place anything there to begin with, but using a dumbbell, yoga block, or similar as a target is useful to ensure you lift far enough each time and creates a challenge as you progress.</p><p><strong>Cossack squats: </strong>These are killer for the legs, glutes, hips, core and even the upper body, as you sit your butt low while lifting your chest, balancing and stretching the inner thighs. Your entire lower body will feel this one, and not only does it increase mobility, but also strength and power in the legs, especially when loading the move.</p><p><strong>Windshield hip extensions: </strong>Building space and strength around your hips is crucial for proper movement mechanics, and the 90-degree position of your legs does this while also activating the gluteal muscles. The added benefit is that you'll lift your hips and squeeze your glutes at the top, adding hip extension and further glute work to the movement.</p><div><blockquote><p>Each of these exercises is beneficial for lower-body mobility, core stability and healthy hips.</p></blockquote></div><p>Give yourself enough time to really work through and control these movements, rather than rushing. </p><p>Combined into one routine, you'll build stronger hips, groin, adductors and glutes while challenging your range of motion and ability to control strength-based movements.</p><p>Adjust the reps and sets as necessary, and play around as I did, with weights and equipment. You can stick to using your bodyweight, but if the moves feel too easy, adjust, even if that means testing a few out with your pooch.</p><p>It's important to keep your core active and spine long throughout, so try to avoid any hunching over, especially in seated positions, where posture is lost very quickly.</p><p>I had great fun getting Mobie involved in this one, and she offered the perfect amount of weight (and cuddles) to make these already challenging moves more so. Not only did I focus on controlling the exercises and moving slowly, but I also contended with keeping her safely steady at my chest, meaning I was actually really focusing on these moves. </p><p>Besides, any excuse to give my dog an extra cuddle, right?</p><p>Give these a try, and let us know how you get on in the comments.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-sit-ups-im-a-personal-trainer-and-i-use-shoot-throughs-to-build-strong-abs-and-obliques-instead" target="_blank">Stop doing 100s of sit-ups: I'm a personal trainer, and I use 'shoot-throughs' to build strong abs and obliques instead</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-teach-people-over-50-to-be-mobile-3-low-impact-moves-that-build-more-stability-than-a-30-minute-walk" target="_blank">I teach people over 50 to be mobile: 3 low-impact moves that build more stability than a 30-minute walk</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Zac Efron's trainer told me to add sled pushes to my workouts for 30 days, and here's what happened to my body ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/zac-efrons-trainer-told-me-to-add-sled-pushes-to-my-workouts-for-30-days-and-heres-what-happened-to-my-body</link>
                                                                            <description>
                            <![CDATA[ A celebrity trainer reveals how to train like Zac Efron using this sled push exercise for 30 days, so we got to work and tried it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QftfVh8s5kWcYKH42EwHH6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VFrP8GK7hywgaYRYaGcPj4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 05:03:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lucy Miller ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/s9KatBYrBQVZzj5oPAagPM.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Miller&amp;nbsp;is a Journalist, Level 3 Personal Trainer, Nutritional Advisor and Children’s Fitness Specialist. She holds fitness qualifications from NASM Training and Premier Training International and has been a fitness journalist and model for over 20 years. Since going freelance in 2014, Lucy left Men’s Fitness Magazine to write for an abundance of top consumer titles such as Women’s Health, Women’s Fitness, Glamour, Top Sante, The Guardian and Runners World.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;She’s also extremely passionate when it comes to educating others about health and physical activity and loves inspiring and working with children and adults to help make fitness fun, sustainable and accessible.&amp;nbsp;In her spare time, Lucy is ever the sportswoman. Once a national gymnast, having won three national titles, she has also run a handful of marathons around the world and loves to test her physical and metal side with regular running and gym sessions, not to mention ballet, bootcamp, boxing and TRX.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VFrP8GK7hywgaYRYaGcPj4-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock / Freelancer Lucy Miller]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Right, Zac Efron at press event. Left, Lucy Miller]]></media:description>                                                            <media:text><![CDATA[Right, Zac Efron at press event. Left, Lucy Miller]]></media:text>
                                <media:title type="plain"><![CDATA[Right, Zac Efron at press event. Left, Lucy Miller]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VFrP8GK7hywgaYRYaGcPj4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I was first introduced to sled pushes while training for my first <a href="https://www.tomsguide.com/news/i-just-competed-at-the-hyrox-european-championships-heres-what-i-learned-about-my-fitness">HYROX</a>. That strip of astroturf running through the middle of the gym looked intimidating enough, but loading a sled up and pushing it back and forth? Even worse.</p><p>As part of my training, it had to be done. I did it, survived it, and happily walked away thinking I'd never have to touch a sled again. It wasn’t until I spoke to Hollywood trainer <a href="https://ramonabraganza.com" target="_blank" rel="nofollow">Ramona Braganza</a>, whose clients include Zac Efron, Jessica Alba, Kate Beckinsale and Bradley Cooper, about how she trains her A-list clients that she recommended switching my routine. </p><p>Her advice? Add sled pushes back into my routine for 30 days. I wasn't exactly thrilled.</p><p>But, like anything, there was a method to her madness as she explained that, at 43, sled pushes offer something many of us need more of: lower-body strength, power and cardiovascular fitness, all without placing excessive stress on the joints.</p><p>And she treats her clients, including Zac, the same. As we reach our 40s, constantly pounding the pavement or chasing heavier and heavier squats isn't always the smartest option. "Maintaining lower-body strength is one of the most important things we can do for longevity, mobility, balance and everyday function," says Braganza.</p><p>30 days later, I was surprised by what happened.</p><h2 id="how-to-do-a-sled-push">How to do a sled push</h2><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/DZqHOddAI7b/" target="_blank">A post shared by Lucy Miller (@lucycmiller_)</a></p><p>A photo posted by  on </p></blockquote></div><p>"A sled push will torch calories while targeting the glutes, legs, core and back in a highly functional way. Think of it as the gym version of pushing a heavy piece of furniture across the room," says Braganza. </p><p><strong>Here's how:</strong></p><ul><li>Place your forearms on the upper third of the sled poles, with your fingers facing down and your hands wrapped around the poles.</li><li>Lean into the sled, pushing your shoulders through so your head and shoulders are positioned over the middle of it. Put as much of your bodyweight over the sled as possible and, as Braganza advises, "keep your chest lifted and your core engaged."</li><li>Keeping a neutral spine, "drive through the balls of your feet and press into the sled poles to move the sled," explains Braganza.</li><li>Focus on pushing with controlled power rather than trying to sprint from the start. Continue taking small, controlled steps until the sled is entirely beyond the 12.5m mark. "Don't rush the movement," she says. "The goal is to stay strong and controlled throughout."</li><li>Once you've reached the end, step away from the sled and walk around to the other side. Then repeat the same steps, pushing the sled back in the opposite direction.</li></ul><h2 id="what-did-i-notice-after-30-days">What did I notice after 30 days?</h2><p>At first, I hated the attention that came with pushing a sled up and down the middle of the gym floor. Or at least, I thought people were paying attention.</p><p>Very quickly, though, I remembered that everyone has their own agenda in the gym and they certainly aren't watching me.</p><p>Once I'd got over my self-consciousness and embraced the fact that I could disappear into my own little bubble of intensity for a few minutes, I actually started to enjoy it.</p><p>So, after 30 days of sled pushes, here are the five things I've noticed.</p><h3 class="article-body__section" id="section-1-my-legs-got-stronger-without-heavy-squats"><span>1. My legs got stronger without heavy squats</span></h3><p>Sled pushes seriously hit my quads, glutes and hamstrings without loading my spine. They require pure leg power, yet place very little stress on the joints.</p><p>"They also support knee and hip stability whilst really getting your heart rate up," explains Braganza.</p><p>After four rounds of a 30-metre push with just one minute's rest between efforts, my legs were on fire, especially my quads and glutes. My calves took a pretty big hit, too.</p><p>The good news? I quickly felt my lower-body strength improving and, by week two, I was comfortably completing six rounds instead of four.</p><p>As someone who loves running outside the gym, I found that reassuring. Research published in the <a href="https://www.researchgate.net/publication/328318795_Effects_of_upper_and_lower_body_wearable_resistance_on_spatio-temporal_and_kinetic_parameters_during_running" target="_blank">Journal of Strength and Conditioning Research</a> found that sled pushing can improve lower-body power and sprint performance in trained athletes, which helps explain why it has become such a staple in athletic training programmes.</p><h3 class="article-body__section" id="section-2-my-conditioning-skyrocketed"><span>2. My conditioning skyrocketed</span></h3><p>I expected sled pushes to strengthen my legs. What I didn't expect was how breathless they would leave me.</p><p>Within seconds, my heart rate was through the roof, and by the end of each round, I was gasping for air. After just a few weeks, though, I noticed I was recovering faster between efforts and feeling less winded during other workouts.</p><p>Sled pushes are a bit of a cheat code because they combine strength and cardio into one brutally effective exercise.</p><p>"The intensity of sled pushes elevates heart rate and metabolic rate, working your anaerobic systems and improving <a href="https://www.tomsguide.com/wellness/fitness/how-to-measure-your-vo2-max">VO2 max</a>," explains Braganza. "This not only makes you more efficient at aerobic activities, but also makes sled pushes an effective component of fat loss programmes."</p><p>Expect to work your entire body, too. "The movement challenges the glutes, hip flexors, shoulders, chest, quads, hamstrings and abs simultaneously, whilst burning a ton of calories," she adds.</p><h3 class="article-body__section" id="section-3-my-core-got-stronger-without-sit-ups-or-crunches"><span>3. My core got stronger without sit-ups or crunches</span></h3><p>When most people think about core training, they probably picture planks, sit-ups, or endless crunches. Sled pushes, however, made sure my abs were working overtime without a single sit-up.</p><p>Every push demands full-body tension and anti-rotation strength, meaning your core has to work hard to keep your body stable and moving in the right direction. I could feel it not just in my abs, but in my obliques and lower back too.</p><p>According to Braganza, this type of training can help improve balance, posture and power.</p><p>"Pushing a sled mimics real-life movements such as pushing a heavy object or accelerating from a stationary position," she explains. "By reinforcing these movement patterns, sled pushes help improve coordination, balance and overall <a href="https://www.tomsguide.com/news/build-your-own-5-move-functional-fitness-workout-with-arnold-schwarzenegger-heres-how">functional fitness</a> in everyday life."</p><h3 class="article-body__section" id="section-4-my-calorie-burn-increased-too"><span>4. My calorie burn increased, too</span></h3><p>Think HIIT meets strength training. Sled pushes are brutally effective for raising your heart rate while simultaneously challenging your muscles, making them a powerful tool for anyone looking to improve fitness and increase <a href="https://www.tomsguide.com/features/non-exercise-activity-thermogenesis-why-neat-could-help-you-burn-more-calories">energy expenditure</a>.</p><p>I was dripping in sweat within minutes, particularly when Braganza paired sled pushes with resistance exercises. "Perform squats for 60 seconds, then push the sled for 20 meters," she told me. "Rest for 60 seconds and repeat for three rounds."</p><p>The beauty of sled training is its versatility. You can pair sled pushes with upper-body exercises such as push-ups or rows, allowing your legs some recovery while keeping your heart rate elevated.</p><p>This approach is known as Peripheral Heart Action (PHA) training, where upper and lower-body exercises are performed back-to-back. "PHA training forces the cardiovascular system to work harder by continually pumping blood between the upper and lower body," explains Braganza. The result is a demanding workout that builds strength, improves conditioning and burns plenty of calories in a relatively short time.</p><h3 class="article-body__section" id="section-5-my-knees-didn-t-moan"><span>5. My knees didn't moan</span></h3><p>I do more than enough running outside of the gym, so sled pushes felt like a refreshing change. They delivered all the legwork I needed without the pounding that often comes with logging miles on the road.</p><p>The best part? Despite the intensity, my knees and joints never complained.</p><p>"The low-impact nature of the sled teaches strength, control and athleticism without risking injury or exacerbating existing joint problems," says Braganza.</p><p>"Despite its intensity, it's a<a href="https://www.tomsguide.com/wellness/fitness/over-70-not-walking-or-swimming-research-suggests-this-is-the-best-low-impact-exercise-to-try"> low-impact exercise</a> that's gentle on the joints, making it an excellent option for those over 40 who want to build strength, speed and explosive power without overloading their bodies."</p><h2 id="what-i-learned-over-30-days">What I learned over 30 days</h2><p>What I learnt after 30 days is that the sled push is one of those love/hate total-body exercises, yet it quickly became one of my favorite ways to build whole-body strength without placing excessive stress on the joints.</p><p>Unlike many traditional gym exercises, sled work requires you to support and move your body under load while generating force through the feet, legs, hips and core. Every stride places meaningful stress through the lower body, while your cardiovascular system has to work hard to drive the sled from one end of the track to the other.</p><p>It was hard graft, but it was also a game-changer for my running form, fitness and confidence.</p><div><blockquote><p>"One of the reasons I like sled work is that it can be scaled to almost any fitness level. You can use lighter loads and move quickly for conditioning, or heavier loads and slower speeds to build strength. Best of all, the sled teaches strength, control and resilience, and those qualities matter at every age," says Braganza.</p></blockquote></div><p>"So this weekend, go find that sled hiding somewhere in your gym and give it a push."</p><p>The sled push might look simple, but done properly, it's one of the most effective full-body exercises for building strength and conditioning. Don't be shy! Get out of your comfort zone and give it a go.</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><a href="https://www.tomsguide.com/wellness/fitness/tired-of-back-pain-this-3-move-low-impact-routine-builds-strong-abs-without-hurting-your-spine" target="_blank">Forget back pain, this low-impact ab workout builds strong abs in just 3 moves</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-5-old-school-exercises-that-still-build-functional-strength-and-muscle-all-over" target="_blank">I’m a weightlifting coach — 5 ‘old-school’ exercises that still build functional strength and muscle all over</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-squats-i-just-tried-this-8-minute-chair-workout-and-its-perfect-for-seniors-beginners-and-anyone-looking-to-build-strength-without-impact" target="_blank">No squats! I just tried this 8-minute chair workout, and it’s perfect for seniors, beginners, and anyone looking to build strength without impact</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stop doing 100s of sit-ups: I'm a personal trainer, and I use 'shoot-throughs' to build strong abs and obliques instead ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-sit-ups-im-a-personal-trainer-and-i-use-shoot-throughs-to-build-strong-abs-and-obliques-instead</link>
                                                                            <description>
                            <![CDATA[ Here’s everything you need to know about the lateral shoot-through and its benefits. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">X3FGwqsWHSXg9jTYAyBghD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BfU3HKMma4YVgxfDCZZmk4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 22 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Mon, 22 Jun 2026 14:48:44 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BfU3HKMma4YVgxfDCZZmk4-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a middle aged woman with strong abs]]></media:description>                                                            <media:text><![CDATA[a middle aged woman with strong abs]]></media:text>
                                <media:title type="plain"><![CDATA[a middle aged woman with strong abs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BfU3HKMma4YVgxfDCZZmk4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Shoot-throughs have been around for a while, but I actually don't see them programmed much. It's a shame because this core exercise doesn't just whip up your heart rate for a cardio blast, it also works your core hard and improves balance, coordination and stability.</p><p>You don't need any equipment to do this move, but there will be some weight-bearing on your wrists, so if you find this difficult, try elevating your hands on blocks or gripping dumbbells.</p><p>One of the best core exercises that really blasts my core muscles is the lateral shoot-through, which is a twisty move that requires you to shift your weight between opposite arms and legs while rotating from side to side, which is a super effective way to strengthen your waist, hips, wrists and shoulders, too. </p><p>Here's exactly how it's done, plus some benefits.</p><p><em>As a reminder, this exercise is beginner-friendly, but what works for my body might not be right for you. If you’re a beginner, pregnant or postpartum, or you’re dealing with an injury, it’s always best to seek personalized advice from an expert.</em></p><h2 id="what-are-lateral-shoot-throughs">What are lateral shoot-throughs?</h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.js" async></script><p>Rather than peddling out endless sit-ups, why not try the lateral shoot-through? It's a multi-layered move because you start in a <a href="https://www.tomsguide.com/news/i-did-bear-planks-every-day-for-a-week-heres-my-results">bear plank</a>, which is great for targeting your hips, thighs, arms, shoulders and deeper core muscles; then, you'll transfer your weight to one side and arm while you kick your leg under your body and twist. </p><p>Don't worry, it's hard to visualize, so if you're lost, I demonstrate how to do lateral shoot-throughs below.</p><p>Although you can speed up the movement to increase cardio, I encourage you to move slowly at first to control the exercise and try to hold for at least a few seconds each side while breathing expansively through your core as you brace. </p><p>Yes, your legs are working, but your hips shouldn't take over this exercise. If they do, bend your raised knee. If you're unsure what "bracing" means, I teach you how to engage your core properly with a <a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-crunches-why-this-5-minute-bracing-routine-builds-a-stronger-core-than-sit-ups-ever-will">5-minute bracing routine</a>. </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/DZuxQ1lIKgU/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li>Start in a tabletop position with your shoulders over your wrists and hips over your knees</li><li>Zip your navel in and brace your stomach, then lift your knees to hover just above your mat, keeping your toes tucked</li><li>Lift your left hand away from the mat and begin twisting your body to the left, pressing through your right hand and shoulder for balance while raising your left arm into the air overhead</li><li>As you do this, lift your right foot away from the mat and send it under your body over to the left. Extend the leg if you can</li><li>Pause for a moment, then rotate and return to center and, without dropping your knees, repeat on the other side</li><li><em><strong>Continue for 8-12 reps per side and 3-4 sets, or 50 seconds of work and 10 seconds of rest for 6-8 rounds. </strong></em></li></ul><h2 id="are-shoot-throughs-good-for-your-back">Are shoot-throughs good for your back?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VqkRQEp9Lt86fRVSYpBYKB" name="GettyImages-2163317714 core muscles.jpg" alt="Woman showing core muscles in activewear with hands on hips" src="https://cdn.mos.cms.futurecdn.net/VqkRQEp9Lt86fRVSYpBYKB.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>Like all exercises, people respond differently to different stimuli. For some people, gentle rotation of the spine helps <a href="https://www.tomsguide.com/wellness/fitness/forget-sciatica-this-2-1-2-method-can-relieve-back-pain-in-just-10-minutes-according-to-a-physiotherapist">relieve back pain,</a> especially from supported positions like a supine twist, where you lie on your back and twist your knees to one side. For others, rotation can aggravate back pain, so really, it's best to seek advice from a physical therapist or your physician if you're unsure.</p><p>Here’s what shoot-throughs <em>can</em> do for your body:</p><p><strong>Strengthen your core</strong></p><p>Many people I've taught as a trainer find this movement easier on the back than Russian twists or standing twists, as the range of motion is pretty gentle. This move also teaches you to control your body in space while coordinating your left and right sides, which is great for balance and stability. What's more, rotational motion hits your obliques, the muscles that run down your waist. </p><p><strong>Increase cardio </strong></p><p>The beauty of the shoot-through is its versatility; we can slow it right down to focus on core control or speed it up for a cardio blast, meaning it fits into many workout styles. </p><p><strong>Improve functional movement</strong></p><p>While I don't anticipate you're doing this exact type of movement daily, you will be rotating your torso without even thinking about it, and your internal and external obliques help facilitate this movement, along with side bending, so it's good to keep them strong and active.</p><p>Besides, the more you practice twisting, lifting your legs and moving around on the floor in fun, playful ways, the more you move in different <a href="https://www.tomsguide.com/wellness/fitness/what-are-the-3-planes-of-motion-for-exercise-and-why-do-they-matter">planes of motion</a>, using more joints and muscles. This, I believe, is also good for the soul, as it's a little bit of fun!</p><p>Give it a try and let us know what you think.</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><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40" target="_blank">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Over 60? Try this 10-minute chair Pilates routine to improve your core strength and stability ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/try-this-10-minute-chair-pilates-routine-to-improve-core-strength-after-60</link>
                                                                            <description>
                            <![CDATA[ Here’s how to do it ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Y4VtpnG8fYo5Nzqh3M49gJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Ss3Tp5LUbhaWrkHfcqVgck-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 21 Jun 2026 06:15:00 +0000</pubDate>                                                                                                                                <updated>Mon, 22 Jun 2026 15:32:30 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Ss3Tp5LUbhaWrkHfcqVgck-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing squats using a chair]]></media:description>                                                            <media:text><![CDATA[a woman doing squats using a chair]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing squats using a chair]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Ss3Tp5LUbhaWrkHfcqVgck-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>A strong core is essential for <a href="https://www.tomsguide.com/wellness/sleep/sleep-duration-slow-biological-aging-study"><u>healthy aging</u></a>. It helps you <a href="https://pubmed.ncbi.nlm.nih.gov/36017772/" target="_blank" rel="nofollow"><u>stand up from a chair</u></a>, climb stairs, carry groceries, <a href="https://pubmed.ncbi.nlm.nih.gov/31722293/" target="_blank" rel="nofollow"><u>maintain good posture</u></a>, and keep your balance as you <a href="https://pubmed.ncbi.nlm.nih.gov/36017772/" target="_blank" rel="nofollow"><u>move through daily life</u></a>.</p><p>However, most classic core exercises become less accessible as you get older. Getting down on the floor for planks, crunches, and leg raises isn’t all that comfortable, especially if you have stiff joints or limited mobility.</p><p>The good news? You can do chair Pilates instead. Chair Pilates uses slow, controlled movements to strengthen the deep muscles that support your spine and pelvis while providing the stability of a chair.</p><p>“Chair Pilates is an excellent way for adults over 60 to build <a href="https://www.tomsguide.com/wellness/workouts/a-pilates-instructor-shares-a-6-move-routine-for-over-60s-to-build-balance-mobility-and-functional-core-strength"><u>core strength</u></a> because it provides support and stability while still challenging the muscles that help maintain posture, balance, and functional movement,” says <a href="https://www.garagegymreviews.com/author/amanda-capritto" target="_blank" rel="nofollow"><u>Amanda Capritto, CPT</u></a>, a personal trainer at Garage Gym Reviews.</p><p>The routine below takes about 10 minutes to complete and can be done at home with nothing more than a sturdy chair. Complete one to two sets of each exercise, resting for 30 to 60 seconds between sets and two to three minutes between rounds. For most adults over 60, Capritto recommends performing <a href="https://www.tomsguide.com/wellness/workouts/do-these-6-chair-based-exercises-to-improve-mobility-and-stability-after-60"><u>chair Pilates</u></a> two to three times per week. Let’s get started.</p><h3 class="article-body__section" id="section-1-seated-pelvic-tilts"><span>1. Seated Pelvic Tilts</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SlzYz7SQns4" allowfullscreen></iframe></div></div><p><a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC12947494/" target="_blank" rel="nofollow"><u>Research</u></a> shows that many people spend years sitting with limited movement through the pelvis. Fortunately, pelvic tilts can help restore that mobility while activating your <a href="https://www.tomsguide.com/features/forget-crunches-5-exercises-that-target-the-lower-abs"><u>lower abs</u></a> and deep stabilizing core muscles.</p><p><strong>How to do it:</strong></p><ul><li>Sit near the front edge of a sturdy chair with both feet flat on the floor.</li><li>Sit tall with your shoulders relaxed and your core engaged.</li><li>Tuck your pelvis underneath you, allowing your lower back to round slightly.</li><li>Pause for one to two seconds and feel your ab muscles engage.</li><li>Slowly tilt your pelvis forward to create a small natural arch in your lower back.</li><li>Move back and forth between positions in a slow, controlled manner.</li><li>Complete 10 to 12 reps.</li></ul><h3 class="article-body__section" id="section-2-seated-marches"><span>2. Seated Marches</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/xxf93bq9-vA" allowfullscreen></iframe></div></div><p>Seated marches challenge your <a href="https://www.tomsguide.com/features/forget-planks-this-seated-ab-workout-sculpts-your-core-in-just-10-minutes"><u>core stability</u></a> while introducing movement through your hips. Because you’re lifting one leg at a time without leaning backwards, your deep core muscles are forced to work to stabilize your torso throughout the exercise.</p><p><strong>How to do it:</strong></p><ul><li>Sit tall with both feet flat on the floor.</li><li>Grip the sides of the chair lightly.</li><li>Engage your core and maintain an upright posture.</li><li>Lift your right knee toward your chest as high as comfortably possible.</li><li>Lower your foot back to the floor with control.</li><li>Repeat on the left side without leaning backwards.</li><li>Continue alternating sides in a slow marching pattern.</li><li>Complete 10-12 marches per leg.</li></ul><h3 class="article-body__section" id="section-3-seated-knee-extensions"><span>3. Seated Knee Extensions</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/VuJZ6dqMf8M" allowfullscreen></iframe></div></div><p>According to <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC7264709/" target="_blank" rel="nofollow"><u>studies</u></a>, strong quads are essential for standing up from a chair, <a href="https://www.tomsguide.com/wellness/fitness/over-60-these-are-the-only-3-exercises-you-need-to-climb-the-stairs-easily-according-to-a-physiotherapist"><u>climbing stairs</u></a>, and walking safely. This exercise strengthens the front of your thighs while requiring your core to stabilize your body during the movement.</p><p><strong>How to do it:</strong></p><ul><li>Sit upright in a chair with both feet planted firmly on the floor.</li><li>Flex your core and keep your chest lifted.</li><li>Slowly extend your right leg until it’s straight.</li><li>Flex your foot slightly and pause for one to two seconds.</li><li>Avoid leaning backwards or slouching.</li><li>Lower your leg slowly back to the starting position.</li><li>Repeat on the opposite side.</li><li>Complete 10 reps per leg.</li></ul><h3 class="article-body__section" id="section-4-seated-spine-twist"><span>4. Seated Spine Twist</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/qEVNj4tcr0Y" allowfullscreen></iframe></div></div><p>Your rotational mobility tends to <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC10340456/" target="_blank" rel="nofollow"><u>decline with age</u></a>, especially for those who spend long periods <a href="https://www.tomsguide.com/wellness/fitness/here-are-3-essential-stretches-that-undo-hours-of-sitting-according-to-a-personal-trainer"><u>sitting</u></a>. The good news is that the seated spine twist can help improve mobility through the thoracic spine while strengthening your obliques (side abs) and deep stabilizing core muscles that improve posture.</p><p><strong>How to do it:</strong></p><ul><li>Sit tall near the front edge of your chair.</li><li>Cross your arms over your chest.</li><li>Engage your ab muscles and sit as upright as possible.</li><li>Slowly rotate your torso to the right.</li><li>Pause for one to two seconds at the end of your range of motion.</li><li>Return to the center position with control.</li><li>Repeat on the left side.</li><li>Complete 8 to 10 rotations per side.</li></ul><h3 class="article-body__section" id="section-5-seated-toe-taps"><span>5. Seated Toe Taps</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/T4uJ4DXQy04" allowfullscreen></iframe></div></div><p>The slight backward lean involved during seated toe taps shifts more work onto your lower abs and deep core stabilizers, helping to improve endurance and control. Many older adults find that exercises like this improve awareness of <a href="https://www.tomsguide.com/wellness/fitness/sit-at-a-desk-all-day-these-are-the-6-best-exercises-you-can-do-to-improve-your-posture"><u>posture</u></a> and core engagement during daily activities.</p><p><strong>How to do it:</strong></p><ul><li>Sit tall with your feet flat on the floor.</li><li>Lean back slightly while keeping good posture.</li><li>Engage your core and avoid rounding your shoulders.</li><li>Lift your right foot a few inches off the floor.</li><li>Tap your toes back to the ground.</li><li>Lift your foot again and continue the movement slowly.</li><li>Alternate sides while maintaining control.</li><li>Complete 10 to 12 taps per leg.</li></ul><h3 class="article-body__section" id="section-6-seated-side-bends"><span>6. Seated Side Bends</span></h3><p>Seated side bends strengthen your obliques while <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3265094/" target="_blank" rel="nofollow"><u>improving mobility throughout your torso</u></a>. This movement also helps develop awareness of side-to-side control, which helps improve <a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-i-added-these-3-balance-drills-to-my-weekly-routine-and-its-changing-how-i-move-daily"><u>balance</u></a> and coordination.</p><p><strong>How to do it:</strong></p><ul><li>Sit upright with both feet planted on the floor.</li><li>Place your right hand behind your head.</li><li>Keep your chest lifted and your core flexed.</li><li>Slowly bend your torso to the left.</li><li>Pause for one to two seconds at the bottom of the movement.</li><li>Return to the starting position with control.</li><li>Complete all reps before switching sides.</li><li>Perform 8 to 10 reps per side.</li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget sit-ups: According to a personal trainer, this standing ab move is the best deep core exercise you can do. I tried it, and I’ll have to agree ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-sit-ups-according-to-a-personal-trainer-this-standing-ab-move-is-the-best-deep-core-exercise-you-can-do-i-tried-it-and-ill-have-to-agree</link>
                                                                            <description>
                            <![CDATA[ Grab a set of dumbbells and try this. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QeEMZGVFNEt6spej5zncRG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vU37XED3QaweVUB7Dnh9VR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 21 Jun 2026 04:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vU37XED3QaweVUB7Dnh9VR-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman lifting dumbbells above her shoulders]]></media:description>                                                            <media:text><![CDATA[a photo of a woman lifting dumbbells above her shoulders]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman lifting dumbbells above her shoulders]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vU37XED3QaweVUB7Dnh9VR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When we talk about building a strong core, we’re referring to a lot more than six-pack abs. Your core is a collection of muscles that make up your midsection, acting as your body’s corset, as well as protecting your spine from injury. Yet when we think of core exercises, we typically picture sit-ups and crunches performed on an exercise mat. </p><p>Standing ab exercises are not only more accessible to a lot of people, but they’ll often work your core harder than you would lying down, as your deep stabilizer muscles have to fire to work against gravity and keep you upright. According to one personal trainer, the dumbbell overhead march is the best deep-core exercise for building functional fitness and addressing muscle imbalances in the body. Read on to find out how to do it, and what happened when I swapped my regular core exercises with this one for a week.</p><p>As a reminder, if you’re a complete beginner or you’re currently dealing with an injury, it’s always best to seek personalized advice before trying something new. This exercise is safe for pregnant and postpartum women, but please seek advice from your doctor or midwife before working out. </p><h2 id="what-is-the-exercise">What is the exercise? </h2><p>All you’ll need for this exercise is a set of dumbbells (check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a> for working out at home here). </p><p>As a reminder, the right weight will feel challenging, but not impossible, by the final few reps. If at any time you feel like holding the weights above your head is making you arch your back or hunch, the weight is too heavy. It’s better to use a lighter weight and move with good form than put yourself at risk of injury. </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/DY98NogqLCr/" target="_blank">A post shared by Strength Training by Shaina Fata (@shainamarie.b)</a></p><p>A photo posted by  on </p></blockquote></div><p>Here’s how to do a dumbbell overhead march with good form: </p><ul><li>Start by standing with your feet slightly wider than hip-width apart, holding a dumbbell in each hand.</li><li>Engage your core, thinking about squeezing your belly button into your spine and zipping your abs up and in, and raise both dumbbells above your head. Keep your arms reaching to the ceiling.</li><li>Keeping your upper body still, bend one knee and bring it up towards your torso. Pause at the top, before lowering it back to your starting position.</li><li>Repeat on the opposite leg, moving slowly and with control.</li><li>Keep switching sides, ensuring you complete the same number of reps on each leg.</li></ul><p>It’s important to really think about your abs during this move — keep your torso braced throughout. Don’t let the dumbbells creep down towards your shoulders too. Keep your elbows locked, thinking about pushing the dumbbells up towards the ceiling. </p><h2 id="what-are-the-benefits-5">What are the benefits? </h2><p>Compared to sit-ups and crunches, this exercise helps you build functional fitness in your deep core. By this, we mean the kind of fitness you need to carry a heavy bag of groceries or lift something down from a shelf. All of the core muscles will be firing throughout this move to stabilize your torso as you keep the weights lifted and march your legs. </p><p>Standing ab exercises are also fantastic for anyone who finds it tricky to lie down on an exercise mat, whether that be because of mobility issues, injuries, or pregnancy. You’ll probably burn more calories during standing ab exercises like this one, as you’ll also be working your upper and lower body at the same time. </p><p>I swapped my dead bugs and crunches for this exercise as my abdominal finisher for a week, and really felt this exercise working my core, but also my shoulders and hip flexors. As a runner and a fitness editor who spends most of her day sitting down behind a desk, if my hip flexors weren’t tight, I’d be superhuman. I had to really think about slowing this move down and pausing at the top of the exercise with one leg lifted to my torso, balancing on one leg. As a runner, single-leg exercises like this are essential for addressing any imbalances in my body, helping avoid injuries, so this is a move I’ll be keeping in my routine for the foreseeable. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I teach people over 50 to be mobile: 3 low-impact moves that build more stability than a 30-minute walk ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-teach-people-over-50-to-be-mobile-3-low-impact-moves-that-build-more-stability-than-a-30-minute-walk</link>
                                                                            <description>
                            <![CDATA[ These three moves are low-impact on your muscles and joints but still help you become more stable and balanced; we teach you how to do them. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cDomqFmbKoMQU54NCrKpxB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MmippowMKMi2uXNQFWjSoY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 21 Jun 2026 01:15:00 +0000</pubDate>                                                                                                                                <updated>Mon, 22 Jun 2026 09:36:25 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MmippowMKMi2uXNQFWjSoY-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images/Westend61]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[senior man doing step ups]]></media:description>                                                            <media:text><![CDATA[senior man doing step ups]]></media:text>
                                <media:title type="plain"><![CDATA[senior man doing step ups]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MmippowMKMi2uXNQFWjSoY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Don't get me wrong, I love walking. I have a little rescue pup who loves nothing more than taking me for a walk, whether it's 6 am or 11 pm, so I spend a lot of time on my feet. </p><p>The <a href="https://www.tomsguide.com/wellness/fitness/ive-been-walking-5k-every-day-to-boost-my-metabolism-and-build-mental-stamina-heres-why-i-dont-count-steps">benefits of walking </a>are well-documented, too: stronger bones, joints, ligaments, and muscles (especially if you enjoy increasing your pace or intensity through power walking, hiking, or rucking); a higher resting metabolism, decreased sedentary time, and a little boost in mobility. It's also a great form of aerobic exercise for building a stronger heart and lungs.</p><p>Although walking can contribute to anti-aging by working the muscles you use for balance and stability, a consistent mobility routine coupled with your daily walks is where the real magic lies. </p><p>Below, I show you how to do three of the best low-impact mobility exercises for functional strength, stability and balance. You can use a set of weights or stick to using your bodyweight. Regardless, one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats</a> is useful to have.</p><p><em>If you experience pain at any time, stop and rest. If you're working with an injury or health condition, or you're currently pregnant or postnatal, I recommend seeking advice before starting these exercises.</em></p><h2 id="watch-3-low-impact-moves-to-try-anywhere">Watch: 3 low-impact moves to try anywhere</h2><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/DZ1sMd_CfOt/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Improving mobility isn't about stretching; it's about being dynamic and moving the joints through a range of movement alongside strengthening exercises that load the muscles to work through resistance. The result? Strong muscles and joints.</p><p>This is also important for your fascia, which is like a web of connective tissue responsible for holding everything in place, like your bones, muscles and organs. Tight fascia increases friction, which is why plenty of stretching, movement, foam rolling and mobility work is important for improving the overall quality of your movements.</p><p>It also responds brilliantly to low-impact and gentle movement, so a consistent mobility routine is certainly helpful.</p><p><strong>The routine:</strong> 3-4 sets, 8-10 reps for the first and third exercises, and a 45-50-second effort for monster walks.</p><ul><li><strong>Stiletto squat x heel raises: </strong>Stand with your feet hip-width apart, then rise onto your tiptoes and squeeze your core muscles for balance. Bend your knees and send your hips backward to lower into a squat, keeping your back straight and chest proud. Focus on something unmoving. At the bottom of the squat, lower your heels, then press upward through both feet to stand. Reverse this by lowering into a standard squat first, then transfer the weight to your tiptoes and press upward to stand, resting your heels down.</li><li><strong>Monster walks: </strong>Stand with your feet wider than shoulder-width, toes pointed out slightly. Sit back into a squat so that your thighs are almost parallel to the ground. Keep your back straight, chest proud and core engaged. Place your hands lightly behind your head and pull your elbows back, knitting both shoulder blades together. Take a few steps forward and outward, then backward, sitting the weight back toward your heels.</li><li><strong>Warrior III: </strong>Stand with your feet hip-width apart. Shift your weight into your left leg and place your hands either in prayer or on your hips. Engage your core. Place a soft bend in your left knee, then hinge forward at the hips and raise your right leg behind you as you lower your chest parallel to the ground. Keep your hips square to the mat and gaze slightly forward to the top of your mat. Keep your hands where they are, or try to extend them in front of you. With control, slowly transition back to standing, then switch sides.</li></ul><h2 id="what-are-the-benefits-6">What are the benefits?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HCR5YvfinR9zDhhzfAs9Bh" name="workout 2_shutterstock_2458594235" alt="a senior woman smiling on a workout mat" src="https://cdn.mos.cms.futurecdn.net/v2/t:622,l:0,cw:6048,ch:3402,q:80/HCR5YvfinR9zDhhzfAs9Bh.jpg" mos="" align="middle" fullscreen="" width="6048" height="4024" 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>Each of these exercises brings something slightly different to the table. </p><p><strong>Stiletto squat x heel raises:</strong> Your ankles and calves are crucial for climbing, walking and running, especially when moving one leg at a time and transferring balance and weight between the left and right sides of the body. </p><p>Stiletto squats are effective for increasing mobility and balance as you squat from your tiptoes, then transfer the weight to your heels and push upward from the squat. You can then reverse this to lower into a squat first, transfer the weight to the balls of your feet, then rise to stand. Notice how your ankles, calves, legs, glutes and core work to keep you balanced and drive movement. You can hold a weight in both hands to add load or hold onto something for extra support.</p><p><strong>Monster walks: </strong>These are killer on the legs, glutes, core and thoracic spine, as you place your hands lightly behind your head and walk forward and backward from a low squat position, knees bent. You can add a band around your thighs or hold a weight plate behind your head for extra load, or place your hands on your hips for a more beginner-friendly option.</p><p><strong>Warrior III: </strong>This is a famous yoga pose used to test lower-body strength and balance. Your core will work to stabilize your torso and prevent rotation, while your hip flexors receive a stretch, too. Embrace all the wobbles and don't be afraid to fall out of the posture, as you're still strengthening all the muscles around your feet, ankles, knees and hips. Essentially, you're enhancing your ability to stand on one leg, which is a transferable skill.</p><div><blockquote><p>Each of these exercises brings something slightly different to the table. </p></blockquote></div><p>Hopefully, you have enough time to really control these movements and make the most of them, rather than rushing. After all, you can't truly rush a balancing exercise.</p><p>Adjust the reps and sets as necessary, and play around by adding weights or equipment. I usually add dumbbells and/or a band above my knees, but if this damages the quality of your reps, stick to using your bodyweight.</p><p>Focus on finding length through your spine rather than hunching, and keeping your chest proud. Any time your hands are behind your head, knit both shoulder blades together to help open your chest and activate the mid and upper back.</p><p>Give these a try, and let us know how you get on in the comments.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/a-pilates-instructor-shares-a-6-move-routine-for-over-60s-to-build-balance-mobility-and-functional-core-strength" target="_blank">A Pilates instructor shares a 6-move routine for over-60s to build balance, mobility and functional core strength</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm a personal trainer, and I'm using this 5-move Pilates routine to build liquid mobility, stability and strength ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/build-liquid-mobility-stability-and-strength-with-this-5-move-pilates-routine-for-your-whole-body</link>
                                                                            <description>
                            <![CDATA[ Yvette McGaffin, director of iFIT Pilates and founder of Reform RX, shares a full-body five-move reformer routine to build strength and stability. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Z9cbKB6yjffg6H5N5nu5Co</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dQFii5GT9fTUiViqauNzSg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 20 Jun 2026 09:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 23 Jun 2026 10:05:17 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dQFii5GT9fTUiViqauNzSg-1280-80.jpg">
                                                            <media:credit><![CDATA[Future owns/ Sam Hopes]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Writer Sam on a reformer Pilates bed on hands and one knee extending her left leg behind her, front view]]></media:description>                                                            <media:text><![CDATA[Writer Sam on a reformer Pilates bed on hands and one knee extending her left leg behind her, front view]]></media:text>
                                <media:title type="plain"><![CDATA[Writer Sam on a reformer Pilates bed on hands and one knee extending her left leg behind her, front view]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dQFii5GT9fTUiViqauNzSg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Pilates is one of those forms of exercise that divides crowds: as we Brits say, "It's like marmite, you either love it or hate it," and the same goes for reformer and mat Pilates. </p><p>But I think you just need a great routine to help you get started, and some patience, as I've learned over the years. If you can persevere, there are some serious health <a href="https://www.tomsguide.com/news/heres-what-an-hour-of-pilates-can-do-for-your-body">benefits of Pilates</a>, including building strength, balance, posture, control and stability. My core has gone from pretty strong to pretty darn solid, too (but alas, I do not own a six-pack).</p><p>"Over the years, I've taught thousands of reformer Pilates classes, developed instructor training programs and worked alongside engineers to design reformers that support people at every stage of their fitness journey," says Yvette McGaffin, director of<a href="https://www3.ifit.com/en-gb" target="_blank" rel="nofollow"> iFIT Pilates</a> and founder of Reform RX. </p><p>"Here's the five-move reformer Pilates sequence I recommend to almost everyone."</p><p><em><strong>As always, seek advice from a physical therapist, Pilates instructor, or relevant medical professional if you're unsure about an injury, health condition, or similar.</strong></em></p><h3 class="article-body__section" id="section-what-are-the-pilates-exercises"><span>What are the Pilates exercises?</span></h3><p>"One thing I've learned is that the most effective workouts aren't necessarily the most complicated," explains McGaffin. "They're the ones that combine strength, mobility, stability and body awareness in a way that feels purposeful and sustainable.</p><p>One of the reasons reformer Pilates has become so popular is that it delivers all of those benefits simultaneously. The reformer provides both support and resistance, allowing people to build strength while improving <em>how</em> they move."</p><p>McGaffin tells us that if she were introducing someone to reformer training or creating a short session that delivers maximum return, these are the five exercises she'd choose every time.</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/DZw5mJuiFNP/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-ice-breaker"><span>Ice breaker</span></h3><p>"The Ice Breaker is one of my favorite reformer exercises because it teaches people how to connect their core, shoulders and hips while improving spinal mobility. It's the perfect way to prepare the body for movement," she says.</p><p>"Think about keeping the torso still and moving from the knees and hips. The goal is control, not range."</p><ul><li>Kneel facing the footbar with your hands shoulder-width apart.</li><li>Glide the carriage away while maintaining a long spine and stable upper body.</li><li>At full extension, gently drive the hips forward and squeeze the glutes, then draw the carriage back underneath you with control.</li></ul><h3 class="article-body__section" id="section-platform-lunge"><span>Platform lunge</span></h3><p>"This movement develops strength through the glutes and legs while challenging balance and stability. It's one of the most functional movements on the reformer because it closely mirrors how we move in everyday life.</p><p>One of the features I love about the <a href="https://www.nordictrack.com/uk" target="_blank" rel="nofollow">NordicTrack</a> Ultra 1 is the split footbar design...One side of the footbar can be used as a support handle, helping newer users build confidence and stability while learning the movement before progressing independently."</p><ul><li>Stand with one foot on the platform and the other on the carriage.</li><li>Lower into a controlled lunge while keeping most of your weight in the front leg, then press through the heel to return to standing.</li><li>Remember to switch sides.</li></ul><h3 class="article-body__section" id="section-wheelbarrow"><span>Wheelbarrow</span></h3><p>"Wheelbarrow challenges the entire front body. It strengthens the chest, shoulders and deep core muscles while teaching the body to stabilize under load," says McGaffin.</p><p>"Keep a slight lift through the hips and imagine drawing your belly button toward your spine throughout the movement."</p><ul><li>Begin in a supported plank position with your hands on the platform.</li><li>Keeping the body in one long line, glide the carriage away, then pull it back underneath you without changing the shape of the body.</li></ul><h3 class="article-body__section" id="section-pendulum-sweep"><span>Pendulum sweep</span></h3><p>"The glute muscles are some of the most important muscles in the body for strength, stability and healthy movement patterns. The Pendulum Sweep is one of my favorite ways to target them because it isolates the hip while challenging control and alignment.</p><p>Focus on keeping the movement smooth and controlled rather than lifting the leg higher. The goal is to feel the work coming from the glute rather than the lower back."</p><ul><li>Lie on your side with the lower shoulder supported and the top foot placed into the strap.</li><li>Keeping your leg long and slightly in front of the body, lift and lower the leg in a controlled arc while maintaining a stable pelvis and strong core connection.</li></ul><h3 class="article-body__section" id="section-feet-in-straps"><span>Feet in straps</span></h3><p>"I often finish sessions with Feet in Straps because it combines mobility, flexibility and control. After the body has worked hard, it provides an opportunity to mobilize the hips, lengthen the legs and down-regulate the nervous system.</p><p>Move slowly and focus on quality rather than range. The combination of controlled movement and breathing is where many of the benefits come from."</p><ul><li>Place both feet into the straps and perform controlled push-downs and circle variations while maintaining a neutral pelvis and steady breathing.</li></ul><h3 class="article-body__section" id="section-why-these-5-exercises-work-so-well-together"><span>Why these 5 exercises work so well together</span></h3><p>"This sequence reflects how I think great Pilates programming should work, explains McGaffin.</p><p>"We start by connecting to the core and spine, build strength through the legs and upper body, challenge stability and control, then finish by restoring mobility and creating a sense of ease in the body.</p><p>Most forms of exercise improve one thing well: strength, endurance, or cardiovascular fitness. What I love about reformer Pilates is that it brings all those elements together while helping you move better."</p><p>McGaffin tells us that the final move is one of her top ways to finish a session, as it allows people to slow down, gently mobilize the hips, improve flexibility and move toward recovery.</p><div><blockquote><p>We start by connecting to the core and spine, build strength through the legs and upper body, challenge stability and control, then finish by restoring mobility and creating a sense of ease in the body.</p></blockquote></div><p>"When we designed the Ultra 1 Reformer (featured), I spent a lot of time thinking about how I wanted people to feel when they trained. Not just stronger, but more capable. More confident in their bodies. More connected to the way they move," she adds.</p><p>A reformer routine worth its salt won't ask you to choose between strength, mobility, stability, or flexibility. "Done well, it develops all of them together. These are the five exercises I'd choose to deliver exactly that."</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><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-training-like-an-elite-soccer-player-using-these-4-strength-and-recovery-tips-from-man-city-w-f-c" target="_blank">I'm training like an elite soccer player using these 4 strength and recovery tips from Man City W.F.C.</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ It only takes 6 exercises to build balance, power, and definition, according to this personal trainer ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/it-only-takes-6-exercises-to-build-balance-power-and-definition-according-to-this-personal-trainer</link>
                                                                            <description>
                            <![CDATA[ This dumbbell workout builds functional strength through unilateral training, with each side of your body working independently. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yXXmyejcAGrd6q6YeEXX2c</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9SYUCu8VxtSPscRFBxFaQf-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 20 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9SYUCu8VxtSPscRFBxFaQf-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman with strong abs holding dumbbells]]></media:description>                                                            <media:text><![CDATA[a photo of a woman with strong abs holding dumbbells]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman with strong abs holding dumbbells]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9SYUCu8VxtSPscRFBxFaQf-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you’re looking to build balance, power, and definition from home, grabbing a set of the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells </a>is a great place to start. Compared to heavy barbells or guided gym machines, dumbbells are amazing at building functional strength and addressing imbalances in the body. </p><p>Dumbbells force unilateral training, meaning each side of your body is working independently. This forces you to address weaknesses or imbalances in the body, and can help improve your overall balance and stability, as well as helping reduce your risk of injuries. </p><p>Yet if you’re a beginner or you’re returning to workouts following an extended break, it can be tricky to know where to start. Luckily you’ve landed in the right place. Read on to find a quick 30-minute workout that you can do using just six exercises and a set of weights. As a reminder, if you’re pregnant or postpartum, or recovering from a specific injury, it’s always best to seek personalized advice before trying something new. </p><h2 id="what-is-the-workout-2">What is the workout? </h2><p>The workout is designed by certified personal trainer <a href="https://www.instagram.com/camillafitness_pt/?g=5" target="_blank" rel="nofollow">Camilla Cresswell</a>, who specializes in training women aged 40 plus. You’ll need a set of weights for all of the exercises — remember that the right weight for you will feel challenging, but not impossible, by the final few reps. If at any time you feel like the weight is compromising your form, it’s too heavy. </p><p>You’ll do the following six exercises three times. Take a short break between sets if you need to. Do 12-15 reps of each exercise, and when this feels easy, increase the weight you’re lifting. The workout should take around 30 minutes in total, but remember it’s important to do fewer reps with good form, so don’t rush. </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/DK_WXmoIFQG/" target="_blank">A post shared by Camilla Cresswell | Fitness Coach (@camillafitness_pt)</a></p><p>A photo posted by  on </p></blockquote></div><p>Here’s the exercises: </p><ul><li><strong>Dumbbell squats:</strong> For this exercise, hold a dumbbell in each hand and lift your hands to shoulder height. Keeping your feet hip-width apart, engage your core, thinking about sucking your belly button into your spine, and lower into a squat, sending your glutes back as if you were sitting in a chair. Pause at the bottom of the movement, before pushing through your feet to stand back up to your starting position.</li><li><strong>Deadlift to row:</strong> Starting with your feet hip-width apart and the dumbbells on the floor in front of you, hinge at your hips to bend down, keeping a slight bend in your knee. Grab both dumbbells and lift them as you stand up — you should feel this down the back of your legs. Keep the dumbbells close to your legs. Once you’re standing, take your elbows out to the side, and row both dumbbells up to chest height, before reversing the movement and taking the dumbbells back down to the floor to complete your next deadlift.</li><li><strong>Squat to press:</strong> For this exercise, you’ll complete the same dumbbell squat as you did in the first exercise, but this time, as you rise back to your starting position, you’ll extend your arms to lift both dumbbells over your head. Squeeze your shoulder blades together at the top of the movement, before bringing the dumbbells back to your shoulders slowly, and with complete control.</li><li><strong>Single-leg around the world:</strong> Stand with your feet hip-width apart, then lift one leg off the ground, keeping a 90-degree bend in your knee if you can. Balance here, engaging your core, then take both arms out in front of you, before bringing them back to your starting position. Then circle both dumbbells out to the side of your body and overhead, before reversing this movement. Do all of your reps on one leg, then complete the same number on the other leg.</li><li><strong>Single-leg bicep curls: </strong>Adopt the same stance as the previous exercise, balancing on one leg, squeezing your core and keeping your pelvis level. This time, curl both dumbbells up towards your torso, thinking about squeezing your biceps at the top of the movement. Again, complete all your reps on one leg before switching to the other.</li><li><strong>Tricep kickback: </strong>For this exercise, start with your feet hip-width apart, engage your core, and hinge at your hips. From here, take both dumbbells back behind you, squeezing your triceps as your arms extend, before bending your elbows and bringing them both back to your torso to your starting position.</li></ul><h2 id="what-are-the-benefits-7">What are the benefits?  </h2><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="Kdavd5EXPNHgVhaX9JHoVf" name="GettyImages-1650763392 back exercises" alt="Man with greying hair outside on a bridge performing shoulder flyes using light dumbbells" src="https://cdn.mos.cms.futurecdn.net/Kdavd5EXPNHgVhaX9JHoVf.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>This workout targets all of the major muscle groups in your body while working on each side of the body individually. It’s extremely common to have one weaker side, and addressing these imbalances is the best way to avoid injuries and improve your overall stability. </p><p>You’ll also be working your core hard during this sequence, without having to lie down on your mat and do a single sit-up. Working with dumbbells requires your body to recruit dozens of tiny stabilizer muscles, and your core muscles to fire up to keep your torso balanced. </p><p>Finally, dumbbell workouts like this one can help you tone up and get in shape. If you’re looking to lose weight, you’ll want to pair workouts like this one with a healthy, balanced diet, and cardio workouts, as well as focusing on being in a calorie deficit, burning more calories than you consume. One of the best ways to keep track of your calorie expenditure is to strap one of <a href="https://www.tomsguide.com/us/best-fitness-trackers,review-2066.html">best fitness trackers</a> to your wrist. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/tvs/watching-the-world-cup-on-a-samsung-tv-change-these-5-sound-and-picture-settings" target="_blank">Watching the World Cup on a Samsung TV? Change these 5 sound and picture settings</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams" target="_blank">How to watch World Cup 2026: live stream every game for free from anywhere in the world, tournament starts today!</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 6 moves, less than 30 minutes: The ‘fit over 40’ core workout engineered to build deep abdominal strength ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/6-moves-less-than-30-minutes-the-fit-over-40-core-workout-engineered-to-build-deep-abdominal-strength</link>
                                                                            <description>
                            <![CDATA[ This workout uses nothing than a dumbbell, has just six moves, and takes less than half an hour to give your core a good burn. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jEFVoG8L2CKvKgyBWjkeS5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/77Eiz72kv2MroNVh5HvM2n-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Jun 2026 05:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 23 Jun 2026 09:37:59 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/77Eiz72kv2MroNVh5HvM2n-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman doing a sit-up with a dumbbell]]></media:description>                                                            <media:text><![CDATA[Woman doing a sit-up with a dumbbell]]></media:text>
                                <media:title type="plain"><![CDATA[Woman doing a sit-up with a dumbbell]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/77Eiz72kv2MroNVh5HvM2n-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When we talk about deep abdominal strength, we’re not referring to six-pack abs. A strong core encompasses your deep abs, obliques, pelvic floor, and glutes to stabilize your spine, act as your body’s corset, and protect your overall posture and balance. </p><p>Whether you’re looking for a quick ab blast to add to the end of your next strength session or you’re coming back to core workouts and looking for some inspiration, you’ve landed in the right place. These six moves hit your abs from every angle, and the entire workout will take you less than 30 minutes. Read on to find out more! </p><p>As a reminder, if you’re a complete beginner, you’re recovering from an injury, or you’re pregnant or postpartum, it’s always best to seek personalized advice from a qualified professional. </p><h2 id="what-is-the-workout-3">What is the workout? </h2><p>This workout is designed by certified personal trainer <a href="https://www.instagram.com/fitby.addy/" target="_blank" rel="nofollow"><u>Adirene Duarte,</u></a> who specializes in training women over 40. All you’ll need for the workout is a dumbbell (check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a> for working out at home). Remember, the right weight for you will feel challenging, but not impossible, by the final few reps. If you feel like the weight is compromising your form, it’s too heavy. </p><p>Remember to keep your abs engaged throughout. To do this, think about squeezing your belly button into your spine, and zipping your abs up and in so you’re engaging your pelvic floor muscles too. </p><p>Duarte recommends doing 3 sets of 15 reps of each exercise. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@fitbyaddy/video/7627992400664841485" data-video-id="7627992400664841485" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@fitbyaddy" href="https://www.tiktok.com/@fitbyaddy">@fitbyaddy</a>                            <p></p><a target="_blank" title="♬ original sound - ThugRadio" href="https://www.tiktok.com/music/original-sound-7282429292571527942">♬ original sound - ThugRadio</a></section>                    </blockquote></div>                <ul><li><strong>Half crunch:</strong> For this exercise, hold your dumbbell in both hands, and use your core to crunch your head, neck, and shoulders off your exercise mat. Think about really squeezing your core at the top of the movement.</li><li><strong>Marching glute bridge: </strong>Keeping your dumbbell lifted to the ceiling and your hips raised into a glute bridge, bring one knee towards your torso, keeping a 90-degree bend in the leg, then the other. Keep alternating legs, and complete 15 reps on each side.</li><li><strong>Double crunch:</strong> For this exercise, inhale at the bottom of the movement, where your arms and legs are extended away from your body. Exhale as you crunch in, taking the dumbbell to your shins and really squeezing your core.</li><li><strong>Sit-up:</strong> For this dumbbell sit-up, move from your core and remember to extend the dumbbell up towards the ceiling as you finish the sit-up. Try to move from your core, without using the momentum of your arms to lift off the mat.</li><li><strong>Incline dumbbell pass under:</strong> For this exercise, hinge your torso back until you feel your abs engage. Pause here, then lift one leg, passing the dumbbell under your lifted leg to the opposite hand. Lower your leg back to the mat, and repeat on the opposite side. Keep switching legs, and complete 15 reps on each leg. Hold your abs in and keep your torso as still as possible.</li><li><strong>Incline Russian twist:</strong> For this exercise, hinge back and hover your legs off the floor. Holding the dumbbell in both hands, rotate your torso to tap the dumbbell to one side of your body, then the other, and keep switching sides.</li></ul><h2 id="what-are-the-benefits-8">What are the benefits? </h2><p>This workout is short but sweet and will blast your core. The added resistance of the dumbbell increases the intensity of the workout and forces the core to work harder against the extra weight. </p><p>As mentioned above, building a strong core isn’t just an aesthetic goal. Lower back pain is one of the most common complaints worldwide, and it is frequently caused by a weak abdominal wall. If your core is weak, your pelvis tilts incorrectly, and your spine absorbs the shock of your body weight. A strong core keeps your pelvis in a neutral position and shields your lower back from injury. </p><p>Strengthening your core can also improve your posture and balance and enhance your athletic performance, whatever you’re training for. This workout targets all of the major muscles in the core, helping you build strength and protect your knees, hips, and back from injury. Of course, your torso will still look the same, but over time, when paired with a healthy diet and good cardiovascular fitness, workouts like this can help you tone up and get in shape.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/sit-all-day-try-these-7-back-exercises-from-a-physical-therapist-right-now" target="_blank">Sit all day? Try these 7 back exercises from a physical therapist right now</a></li></ul><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=Fitness&view_mode=savings_squad&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 getTimeAgo(dateString) {        if (!dateString) return '';        const date = new Date(dateString);        const now = new Date();        const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);        if (diffInSeconds < 60) return 'Just now';        const diffInMinutes = Math.floor(diffInSeconds / 60);        if (diffInMinutes < 60) return `${diffInMinutes} min${diffInMinutes > 1 ? 's' : ''} ago`;        const diffInHours = Math.floor(diffInMinutes / 60);        if (diffInHours < 24) return `${diffInHours} hr${diffInHours > 1 ? 's' : ''} ago`;        const diffInDays = Math.floor(diffInHours / 24);        if (diffInDays < 30) return `${diffInDays} day${diffInDays > 1 ? 's' : ''} ago`;        const diffInMonths = Math.floor(diffInDays / 30);        if (diffInMonths < 12) return `${diffInMonths} mo${diffInMonths > 1 ? 's' : ''} ago`;        const diffInYears = Math.floor(diffInDays / 365);        return `${diffInYears} yr${diffInYears > 1 ? 's' : ''} ago`;      }      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%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      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-container {      position: relative;      width: 100%;      max-width: 800px;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }    @container tg-df (max-width: 768px) {      .tg-df-scroll-btn {        display: flex;        top: 22px; /* vertically center within the 44px high filter buttons */      }    }    .tg-df-filters {      display: grid;      width: 100%;      grid-template-columns: repeat(4, 1fr);      gap: 12px;      margin: 0 auto;      max-width: 800px;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;    }        .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 {      width: 100%;      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;    }    @container tg-df (max-width: 768px) {      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 800px;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }    @container tg-df (max-width: 768px) {      .tg-df-scroll-btn {        display: flex;        top: 22px; /* vertically center within the 44px high filter buttons */      }    }    .tg-df-filters {        width: 100%;        margin: 0;        margin-bottom: -320px;        padding: 0 16px 320px 16px;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .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);    }    .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;    }    /*       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: 120px;      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: 16px 16px 8px;      }            .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-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .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;      }      /* 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;        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;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .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: 14px;      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; }    .tg-df-grid-wrapper { position: relative; }    @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: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .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;    }    .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;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .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::-webkit-scrollbar {      display: none;    }    .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;      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 {    }    .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.40);        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: #1f69ff; 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: #0056e0; 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; }    .tg-df-savings-squad-header { margin-bottom: 24px; text-align: center; display: none; }    .tg-df-banner-img-desktop { display: block; width: 100%; height: auto; margin-bottom: 32px; }    .tg-df-banner-img-mobile { display: none; width: 100%; height: auto; margin-bottom: 32px; }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop { display: none; }      .tg-df-banner-img-mobile { display: block; }    }    .tg-df-header-title { font-size: 28px; font-weight: 700; color: var(--tg-df-text); margin: 32px 0 12px 0; line-height: 1.3; }    .tg-df-header-subtitle { font-size: 16px; color: var(--tg-df-text-muted); margin: 0 0 32px 0; line-height: 1.5; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3Cdiv class="tg-df-savings-squad-header" id="tg-df-savings-squad-header">      \x3Cpicture>        \x3Cimg src="https://cdn.mos.cms.futurecdn.net/flexiimages/xkh2og7m3d1778189998.png" alt="Deals Banner" class="tg-df-banner-img-desktop" />        \x3Cimg src="https://cdn.mos.cms.futurecdn.net/flexiimages/gmak6rtdf41778245089.png" alt="Deals Banner Mobile" class="tg-df-banner-img-mobile" />      \x3C/picture>      \x3Cdiv class="tg-df-header-text">        \x3Ch2 class="tg-df-header-title" id="tg-df-header-title">Editor's Choice Deals\x3C/h2>        \x3Cp class="tg-df-header-subtitle" id="tg-df-header-subtitle">Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.\x3C/p>      \x3C/div>    \x3C/div>    \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-carousel-cat" data-query="Televisions" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/wcMxTsHgqu3roMbAx7RLnT-132-100.png" alt="TVs" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">TVs\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Phones" data-pr="over50">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/G3KGaRGzj24F6PUsw4bWpT-132-100.png" alt="Phones" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Phones\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Computing" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/znNvsLzx8NEgNkD9HSFSnT-132-100.png" alt="Computing" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Computing\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Gaming" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/Pgew8yaRQeZFHqHjTzvBnT-132-100.png" alt="Gaming" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Gaming\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Mattresses" data-pr="over500">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/cW7xsaLyesxkHFVSiC4kmT-132-100.png" alt="Mattresses" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Mattresses\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Audio" data-pr="over30">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/pCvBVHuhaQVjKt3VgCjbqT-132-100.png" alt="Audio" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Audio\x3C/span>            \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>        \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-top-bar" id="tg-df-top-bar" style="position: relative; z-index: 100; margin: 0 auto 20px;">        \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>      \x3C/div>    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">              \x3Cdiv class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0 auto;">          \x3Cbutton class="tg-df-scroll-btn left" style="display: none;" onclick="this.parentElement.querySelector('.tg-df-filters').scrollBy({left: -200, behavior: 'smooth'})">            \x3Csvg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\x3Cpath d="M15 18l-6-6 6-6"/>\x3C/svg>          \x3C/button>          \x3Cbutton class="tg-df-scroll-btn right" style="display: none;" onclick="this.parentElement.querySelector('.tg-df-filters').scrollBy({left: 200, behavior: 'smooth'})">            \x3Csvg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\x3Cpath d="M9 18l6-6-6-6"/>\x3C/svg>          \x3C/button>          \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 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/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();        }        getViewMode() {          console.log("DEBUG getViewMode -> override:", this.viewModeOverride, "editorMode:", this.editorMode);          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();          console.log("[DEBUG] applyLayoutMode CALLED! mode=", mode);          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');          const topBarDiv = this.root.querySelector('#tg-df-top-bar');          const headerElement = this.root.querySelector('#tg-df-savings-squad-header');          if (headerElement) {             headerElement.style.display = mode === 'savings_squad' ? 'block' : 'none';          }          if (mode === 'carousel') {             this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (topBarDiv) topBarDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.add('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (topBarDiv) topBarDiv.style.display = 'block';             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 (!this.viewModeOverride && initialViewMode) {            this.viewModeOverride = initialViewMode;          }          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Gaming laptops';          }          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 { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button: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 (this.viewModeSelect && params.has('view_mode')) {            this.viewModeSelect.value = 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') || 'date_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }          const headerTitleEl = this.root.querySelector('#tg-df-header-title');          const headerSubtitleEl = this.root.querySelector('#tg-df-header-subtitle');          if (params.has('widget_title') && headerTitleEl) {             headerTitleEl.textContent = params.get('widget_title');          }          if (params.has('widget_subtitle') && headerSubtitleEl) {             headerSubtitleEl.textContent = params.get('widget_subtitle');          }                    // 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) {            if (this.getViewMode() === 'savings_squad') {              this.searchInput.value = '';            } else {              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 !== 'date_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 handleFiltersScroll = () => {            const filters = this.root.querySelector('.tg-df-filters');            const leftBtn = this.root.querySelector('.tg-df-scroll-btn.left');            const rightBtn = this.root.querySelector('.tg-df-scroll-btn.right');            if (filters && leftBtn && rightBtn) {              const { scrollLeft, scrollWidth, clientWidth } = filters;              leftBtn.style.display = scrollLeft > 0 ? 'flex' : 'none';              rightBtn.style.display = Math.ceil(scrollLeft + clientWidth) < scrollWidth - 5 ? 'flex' : 'none';            }          };          const filters = this.root.querySelector('.tg-df-filters');          if (filters) {            filters.addEventListener('scroll', handleFiltersScroll);            window.addEventListener('resize', handleFiltersScroll);            setTimeout(handleFiltersScroll, 100);                        // Also call after rendering dropdowns            const origRenderCategories = this.renderCategories;            if (origRenderCategories) {               this.renderCategories = (...args) => {                 origRenderCategories.apply(this, args);                 setTimeout(handleFiltersScroll, 50);               };            }          }                const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');          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');              }            });          }          const showAutocomplete = () => {             if (this.getViewMode() !== 'savings_squad' || !this.autocompleteDropdown || !this.airedaleTags) return;                          let terms = this.airedaleTags;             if (this.airedaleBrands) {                terms = terms.concat(this.airedaleBrands.map(b => b.formatted_value));             }             terms = [...new Set(terms)];                          const query = this.searchInput.value.trim();             let matches = [];             if (query.length > 0) {                 matches = terms.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase());             } else {                 matches = terms;             }                          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');             }          };          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('focus', showAutocomplete);            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              showAutocomplete();              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  if (this.getViewMode() === 'savings_squad') {                    this.activeDealTag = null;                    this.currentQuery = '';                    if (this.categoryFilter) this.categoryFilter.value = 'all';                    this.fetchDeals('');                  } else {                    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;                                let isTag = false;                if (this.airedaleTags && this.airedaleTags.includes(query)) isTag = true;                if (this.airedaleBrands && this.airedaleBrands.some(b => b.formatted_value === query)) isTag = true;                this.activeDealTag = isTag ? query : null;                                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   if (query.length === 0 && this.getViewMode() === 'savings_squad') {                       if (this.categoryFilter) this.categoryFilter.value = 'all';                   }                   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;                   if (this.categoryFilter && this.airedaleTags.includes(tag)) {                       this.categoryFilter.value = 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 });                            let isTag = false;              if (this.airedaleTags && this.airedaleTags.includes(query)) isTag = true;              if (this.airedaleBrands && this.airedaleBrands.some(b => b.formatted_value === query)) isTag = true;              this.activeDealTag = isTag ? query : null;                            this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 if (query.length === 0 && this.getViewMode() === 'savings_squad') {                     if (this.categoryFilter) this.categoryFilter.value = 'all';                 }                 this.fetchDeals(query);              }            });          }          if(this.sortSelect && this.sortSelect.querySelector('option[value="date_desc"]') === null) {              const option = document.createElement('option');              option.value = "date_desc";              option.text = "Newest First";              this.sortSelect.insertBefore(option, this.sortSelect.firstChild);          }          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;               if (val) {                 this.currentQuery = val;               } else {                 if (this.searchInput && this.currentQuery === document.querySelector('#tg-df-brand-trigger')?.getAttribute('data-active-brand')) {                     // don't clear current query if a brand is selected                 } else if (this.searchInput) {                     this.currentQuery = '';                     this.searchInput.value = '';                 }               }               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 = 'date_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        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 fetchDeals(query) {          this.showLoading();          this.deals = [];          this.displayLimit = (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;                    try {            console.log("getViewMode returns:", this.getViewMode());            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad();            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query);               } else {                 await this.fetchHawkDeals(query);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query);                 }               }            }          } 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_1781000519267.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 && this.currentQuery) {             const tagMatch = this.airedaleTags.find(t => t.toLowerCase() === this.currentQuery.toLowerCase());             if (tagMatch) {                this.activeDealTag = tagMatch;             }          }          if (this.activeDealTag) {             const encodedTag = encodeURIComponent(this.activeDealTag.toLowerCase().replace(/\s+/g, '-'));             const url = `https://airedale.futurecdn.net/feeds/feed_1781000519267.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 seenUrls = new Set();                    let overallBrandsCounts = {};                    // First pass: extract ALL brands from topArticles so the dropdown has all options          topArticles.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) => {                const data = block.data || {};                if (data.brand) {                   const cleanBrand = data.brand.replace(/^\d+\.\s*/, '').trim();                   overallBrandsCounts[cleanBrand] = (overallBrandsCounts[cleanBrand] || 0) + 1;                }             });          });          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();                }                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;                   }                }                                if (externalUrl) {                   if (seenUrls.has(externalUrl)) return;                  seenUrls.add(externalUrl);                }                                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 || '',                   authorName: article.articleauthortext ? article.articleauthortext[0] : (article.articleauthor ? article.articleauthor[0] : ''),                   authorRole: article.articleauthorrole ? article.articleauthorrole[0] : '',                   authorImage: article.articleauthormedia ? article.articleauthormedia[0] : '',                   documentUrl: article.documenturl ? article.documenturl[0] : '',                   modifiedDate: article.contentmodifieddate || article.modifieddate || ''                });             });          });                    const airedaleBrandsList = Object.keys(overallBrandsCounts).map(b => ({              formatted_value: b,              count: overallBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    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');                    if (this.rowsSelect && this.rowsSelect.value) {            url.searchParams.append('rows', this.rowsSelect.value);          } else {             url.searchParams.append('rows', '12'); // default          }          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = 12;          if (this.rowsSelect && this.rowsSelect.value) {            rowLimit = parseInt(this.rowsSelect.value, 10) || 12;          }          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : 'date_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}                ${_div}              ${_div}              \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin:0; border-radius:0;">${_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 => {              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}`;                }              }              return `                \x3Ca href="${this.escapeHTML(linkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item">                  ${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);                }              });            });                                  } 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)}${_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 = 'View Deal';              if (isSavingsSquadMode) {                priceGroupHtml = ``;              } else {                priceGroupHtml = `                  \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 = isSavingsSquadMode ? `` : `                \x3Cdiv class="tg-df-card-price-group">                  \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 = `              \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 tg-df-card-desc-container" style="margin-bottom: 12px; position: relative;">                          \x3Cp class="tg-df-card-desc-content" style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${this.escapeHTML(deal.description)}${_p}                          \x3Cbutton type="button" class="tg-df-card-desc-btn" style="display: none; appearance: none; border: none; color: #000000; font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0; background: linear-gradient(to right, transparent, #fff 20%, #fff); padding: 0 0 0 16px;" onclick="                            var c = this.parentNode;                            if (this.dataset.expanded === 'true') {                              var pd = (c.tagName === 'P') ? c : this.previousElementSibling;                              if (c.tagName === 'P') { c.parentNode.appendChild(this); pd = c; }                              pd.style.display = '-webkit-box';                              pd.style.webkitLineClamp = '3';                              this.textContent = 'READ MORE';                              this.style.position = 'absolute';                              this.style.background = 'linear-gradient(to right, transparent, #fff 20%, #fff)';                              this.style.paddingLeft = '16px';                              this.dataset.expanded = 'false';                            } else {                              var pd = this.previousElementSibling;                              pd.style.display = 'inline';                              pd.style.webkitLineClamp = 'unset';                              this.textContent = 'READ LESS';                              this.style.position = 'static';                              this.style.background = 'transparent';                              this.style.paddingLeft = '4px';                              this.dataset.expanded = 'true';                              pd.appendChild(this);                            }                          ">READ MORE${_button}                        \x3C/div>` : ''}                      ${_div}                    ${_div}                    ${deal.authorName ? `                      \x3Cdiv class="tg-df-author-line-mobile" style="padding: 0 0 12px 0; background: transparent;">                         \x3Cdiv style="display: flex; align-items: center; gap: 12px;">                            ${deal.authorImage ? `\x3Cimg src="${this.escapeHTML(deal.authorImage)}" alt="${this.escapeHTML(deal.authorName)}" class="tg-df-author-img" width="40" height="40" style="border-radius: 50%; object-fit: cover;">` : ''}                            \x3Cdiv style="display: flex; flex-direction: column;">                               \x3Cdiv style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;">\x3Cspan style="color: #FF6600;">${this.escapeHTML(deal.merchant)}${_span} deal recommended by:${_div}                               \x3Cdiv style="font-size: 11px; color: var(--tg-df-text); line-height: 1.3;">                                  \x3Cstrong>\x3Ca href="https://www.tomsguide.com/${this.escapeHTML(deal.documentUrl || '').replace(/^\/+/, '')}" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">${this.escapeHTML(deal.authorName)}${_a}${_strong}                                  ${deal.authorRole && !['null', 'nul', 'undefined'].includes(String(deal.authorRole).toLowerCase()) ? ` • ${this.escapeHTML(deal.authorRole)}` : ''}                                  ${deal.modifiedDate ? `\x3Cdiv style="color: var(--tg-df-text-muted); margin-top: 2px;">${getTimeAgo(deal.modifiedDate)}${_div}` : ''}                               ${_div}                            ${_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>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}                  \x3Cdiv class="tg-df-card-merchant-wrapper" style="position: absolute; bottom: 0; right: 0; background: transparent; padding: 8px 12px; z-index: 10;">                     \x3Cspan class="tg-df-card-merchant-pill" style="text-align: right; margin-bottom: 0;" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cdiv class="tg-df-card-desc-container" style="margin-bottom: 12px; position: relative;">                    \x3Cp class="tg-df-card-desc-content" style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${this.escapeHTML(deal.description)}${_p}                    \x3Cbutton type="button" class="tg-df-card-desc-btn" style="display: none; appearance: none; border: none; color: #000000; font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0; background: linear-gradient(to right, transparent, #fff 20%, #fff); padding: 0 0 0 16px;" onclick="                      var c = this.parentNode;                      if (this.dataset.expanded === 'true') {                        var pd = (c.tagName === 'P') ? c : this.previousElementSibling;                        if (c.tagName === 'P') { c.parentNode.appendChild(this); pd = c; }                        pd.style.display = '-webkit-box';                        pd.style.webkitLineClamp = '3';                        this.textContent = 'READ MORE';                        this.style.position = 'absolute';                        this.style.background = 'linear-gradient(to right, transparent, #fff 20%, #fff)';                        this.style.paddingLeft = '16px';                        this.dataset.expanded = 'false';                      } else {                        var pd = this.previousElementSibling;                        pd.style.display = 'inline';                        pd.style.webkitLineClamp = 'unset';                        this.textContent = 'READ LESS';                        this.style.position = 'static';                        this.style.background = 'transparent';                        this.style.paddingLeft = '4px';                        this.dataset.expanded = 'true';                        pd.appendChild(this);                      }                    ">READ MORE${_button}                  \x3C/div>` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${deal.authorName ? `                    \x3Cdiv class="tg-df-author-line-desktop" style="padding: 0 0 ${isSavingsSquadMode ? 0 : 12}px 0;">                       \x3Cdiv style="display: flex; align-items: center; gap: 10px;">                          ${deal.authorImage ? `\x3Cimg src="${this.escapeHTML(deal.authorImage)}" alt="${this.escapeHTML(deal.authorName)}" class="tg-df-author-img" width="36" height="36" style="border-radius: 50%; object-fit: cover;">` : ''}                          \x3Cdiv style="display: flex; flex-direction: column;">                             \x3Cdiv style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;">Recommended by:${_div}                             \x3Cdiv style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;">                                \x3Cstrong>\x3Ca href="https://www.tomsguide.com/${this.escapeHTML(deal.documentUrl || '').replace(/^\/+/, '')}" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">${this.escapeHTML(deal.authorName)}${_a}${_strong}                                ${deal.authorRole && !['null', 'nul', 'undefined'].includes(String(deal.authorRole).toLowerCase()) ? ` • ${this.escapeHTML(deal.authorRole)}` : ''}                                ${deal.modifiedDate ? `\x3Cspan style="color: var(--tg-df-text-muted);"> • ${getTimeAgo(deal.modifiedDate)}${_span}` : ''}                             ${_div}                          ${_div}                       ${_div}                    ${_div}                    ` : ''}                    ${priceGroupHtml}                  ${_div}                ${_div}                \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta" style="text-decoration: none; border-radius: 0;">${ctaText}${_a}              ${_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) {            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;">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); }          setTimeout(() => {            const contents = this.root.querySelectorAll('.tg-df-card-desc-content');            contents.forEach(p => {              if (p.scrollHeight > p.clientHeight || p.scrollHeight > 60) {                if (p.nextElementSibling) {                  p.nextElementSibling.style.display = 'block';                }              }            });                        // 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');            }            if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');            if (!this.processArticleFired) {                  this.processArticleFired = true;                  document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));               }          }, 50);          const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              this.displayLimit += 12;              this.render();            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I build strength and stability using these 3 moves and a 15-minute Pilates workout, and it's beginner-friendly ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/you-dont-need-a-pilates-studio-just-try-these-3-moves-and-a-15-minute-pilates-ring-workout</link>
                                                                            <description>
                            <![CDATA[ Try this three-move Pilates ring workout for an all-over burn. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DD5BFv9pNtzEXfMpTLUemC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dGHTTd9e3gjtkz7Rjqifr6-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 07:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 18 Jun 2026 09:03:00 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dGHTTd9e3gjtkz7Rjqifr6-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman with Pilates ring between feet performing a v-sit on exercise mat in studio]]></media:description>                                                            <media:text><![CDATA[Woman with Pilates ring between feet performing a v-sit on exercise mat in studio]]></media:text>
                                <media:title type="plain"><![CDATA[Woman with Pilates ring between feet performing a v-sit on exercise mat in studio]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dGHTTd9e3gjtkz7Rjqifr6-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve been practicing Pilates long enough to know you don't need lots of equipment or heavy weights to leave a Pilates workout feeling like you're trembling from head to toe. It's those high reps and endurance sets that strengthen and lengthen, not a heavy dumbbell set. </p><p>I can personally credit Pilates with transforming my core from the inside out, and one piece of equipment I really enjoy using is the Pilates ring. Recently, I turned to the expertise of Pilates instructor Georgia Weibel, the founder of <a href="https://www.instagram.com/syncwithgeorgia/" target="_blank" rel="nofollow">Sync With Georgia</a>. She put together a beginner-friendly home Pilates workout you can do with just a Pilates ring and an exercise mat.</p><p>Here's the routine, and my verdict after trying this Pilates workout for the first time.</p><h2 id="why-use-a-pilates-ring">Why use a Pilates ring?</h2><p>"Also referred to as the 'Magic Circle.' It’s part of the classical mat repertoire," says Weibel.</p><p>"It is one of the simplest ways to increase intensity without increasing impact. It can help improve posture, core strength, stability, and muscle endurance while remaining suitable for beginners. It’s also incredibly portable, making it ideal for home workouts, travel, or adding variety to your existing routine."</p><p>Of course, lasting strength and stability come with time and practice, so you'll need to add these moves to a wider routine and progressively make them more challenging to notice results in the long term.</p><h2 id="3-move-pilates-ring-workout-to-try-from-home">3-move Pilates ring workout to try from home</h2><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/DZm-DeloNqj/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Weibel uses the <a href="https://www.onyx-fitness.com/" target="_blank" rel="nofollow">Onyx Pilates ring,</a> which uses signature pill-shaped handles to contour to the arms and legs for comfort and control. </p><p><strong>Here are the Pilates exercises:</strong></p><h3 class="article-body__section" id="section-1-kneeling-lean-back-to-overhead-ring-press"><span>1. Kneeling lean back to overhead ring press</span></h3><p>"This move challenges your core, improves posture, and strengthens the shoulders while encouraging stability through the entire body. Reduce the range of the lean back and keep the overhead press lower if needed."</p><ul><li>Start kneeling with your hips stacked over your knees, holding the Pilates ring at chest height.</li><li>Lean back slightly while keeping your core engaged, then return upright and press the ring overhead.</li></ul><h3 class="article-body__section" id="section-2-pilates-ring-teaser-roll-up"><span>2. Pilates ring teaser roll up</span></h3><p>"This exercise strengthens the deep core muscles, improves coordination, and helps build spinal mobility and control. Bend the knees or roll up only part of the way until you build strength."</p><ul><li>Lie on your back holding the Pilates ring with both hands.</li><li>Slowly roll up through the spine into a "teaser position," balancing on your sitting bones, then lower back down with control.</li></ul><h3 class="article-body__section" id="section-3-shoulder-bridge-with-ring-squeeze"><span>3. Shoulder bridge with ring squeeze</span></h3><p>"This move targets the glutes, hamstrings, inner thighs, and core while improving hip stability and coordination. Keep the feet flat on the floor and reduce the bridge height if required."</p><ul><li>Lie on your back with the Pilates ring placed between your thighs and your heels lifted.</li><li>Squeeze the ring as you lift your hips into a bridge, raising your arms overhead as you reach the top of the movement.</li><li>Slowly lower back down through your spine with control.</li></ul><p>"The Pilates ring is lightweight, comfortable to hold, and versatile enough to add challenge to both upper and lower body exercises," says Weibel. "The padded handles provide a secure grip, while the resistance helps create deeper muscle engagement without adding heavy weights.</p><p>I particularly love using a Pilates ring because it encourages greater <a href="https://www.tomsguide.com/wellness/fitness/expert-trainers-say-the-mind-muscle-connection-is-crucial-for-building-strength-and-muscle-heres-why">mind-muscle connection</a>. Small adjustments and gentle resistance can make familiar Pilates exercises feel much more effective, helping you activate muscles that are often overlooked during bodyweight workouts."</p><h2 id="my-verdict">My verdict</h2><p>I love a Pilates workout that feels accessible, and this is just that. Three moves, performed slowly and with control for 45 seconds, with a 10-15 second transition, totaling 15 minutes of work.</p><p>Check out the video, which shows each move in action, demonstrated by instructor Georgia.</p><p>Remember, good form is essential. I highly recommend this quick<a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-crunches-why-this-5-minute-bracing-routine-builds-a-stronger-core-than-sit-ups-ever-will"> five-minute bracing routine</a> to help you learn how to engage your core properly if this is a problem for you. Think about breathing expansively throughout and avoid arching your back. Squeezing your glutes is also helpful, as this will help you protect your back and control the reps.</p><p>If you're new to <a href="https://www.tomsguide.com/wellness/fitness/who-needs-weights-this-pilates-workout-will-strengthen-your-entire-body-in-just-10-minutes">Pilates workouts</a>, I would seek advice from an instructor before starting, especially if you have an injury or health condition. You can also shorten your working sets to 20 or 30 seconds or extend your rest periods accordingly if you need less intensity.</p><p>Try to aim for a similar number of reps each round, exhaling as your muscles meet with the most tension. Let us know how you get on!</p><ul><li><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></li></ul><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You only need 10-minutes to sculpt your core with this 5-move home abs workout — no equipment required ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/ab-workouts-dont-need-to-be-long-and-complicated-this-5-move-10-minute-session-blasts-the-whole-core-and-you-dont-need-any-equipment</link>
                                                                            <description>
                            <![CDATA[ If you have 10 minutes to spare, you have enough time to tackle this effective core workout that puts you through two rounds of fast-paced exercises to target your upper and lower abs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Z2gY6b4icbtLftAhxxVvwN</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/REfhGYCUiKyVNdzmBYJNZB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 17 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 18 Jun 2026 08:07:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick has been a journalist since 2012 and has spent most of that time writing about health and fitness for a variety of publications. Nick spent nine years working on the Coach magazine and website before moving to the fitness team at Tom’s Guide in 2024. Nick is a keen runner and also the founder of YouTube channel &lt;a href=&quot;https://www.youtube.com/channel/UCOBM9FasII4dKbyE_HKkbjw&quot;&gt;The Run Testers&lt;/a&gt;, which specialises in reviewing running shoes, watches, headphones and other gear.&lt;/p&gt;&lt;p&gt;Nick has covered all aspects of health and fitness throughout his career, interviewing experts and celebrities, trying fitness classes and running marathons, all in the name of providing readers with the information they need to get the most out of an active lifestyle.&lt;/p&gt;&lt;p&gt;Nick ran his first marathon in 2016 after six weeks of training for a magazine feature and subsequently became obsessed with the sport. He now has PBs of 2hr 25min for the marathon and 15min 30sec for 5K, and has run 16 marathons in total, as well as a 50-mile ultramarathon.&lt;/p&gt;&lt;p&gt;Nick runs 60-90 miles a week and races regularly with his club, which gives him a lot of opportunity to test out running gear: he has tested and reviewed hundreds of pairs of running shoes, as well as fitness trackers, running watches, sports headphones, treadmills, and all manner of other kit. Nick is also a qualified Run Leader in the UK.&lt;/p&gt;&lt;p&gt;Nick is an established expert in the health and fitness area and along with writing for several publications, including &lt;a href=&quot;https://www.livescience.com/author/nick-harris-fry&quot;&gt;Live Science&lt;/a&gt;, &lt;a href=&quot;https://www.expertreviews.co.uk/authors/nick-harris-fry&quot;&gt;Expert Reviews&lt;/a&gt;, &lt;a href=&quot;https://www.wareable.com/author/n.harris-fry&quot;&gt;Wareable&lt;/a&gt;, &lt;a href=&quot;https://www.coachweb.com/author/nick-harris-fry&quot;&gt;Coach&lt;/a&gt; and &lt;a href=&quot;https://www.getsweatgo.com/author/n.harrisfry&quot;&gt;Get Sweat Go&lt;/a&gt;, he has been quoted on &lt;a href=&quot;https://www.theguardian.com/thefilter/2024/oct/20/if-you-pay-more-than-4-youre-being-ripped-off-the-fair-price-for-14-everyday-items-from-cleaning-spray-to-olive-oil&quot;&gt;The Guardian&lt;/a&gt; and &lt;a href=&quot;https://www.independent.co.uk/life-style/health-and-families/london-marathon-2021-date-training-tips-summer-running-a9482486.html&quot;&gt;The Independent&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Nick graduated from the University of York in 2010 with a degree in Politics, Philosophy and Economics and worked in the NHS for three years, during which time he completed his NCTJ Diploma in Journalism at News Associates in London. Before starting on Coach and moving into health and fitness, Nick worked as a football journalist and lived in Kathmandu, Nepal for two years.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/REfhGYCUiKyVNdzmBYJNZB-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman with strong abdominal muscles ]]></media:description>                                                            <media:text><![CDATA[a photo of a woman with strong abdominal muscles ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman with strong abdominal muscles ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/REfhGYCUiKyVNdzmBYJNZB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As someone who doesn’t like to spend a lot of time doing strength training, I’ve always liked core workouts because it really doesn’t take long to challenge and strengthen your abs in particular.</p><p>Every time I tackle a core workout, I’m shocked by just how quickly my abs start to burn. Even if a session is just 10 minutes long, I know I’m going to spend a good eight or nine minutes of that time working hard, and that my abs will be aching the next day.</p><p>So if you’re pressed for time and just want a short, sharp and effective training session, core workouts are always a great option, and this 10-minute abs blaster from fitness trainer <a href="https://www.youtube.com/@OliverSjostrom" target="_blank" rel="nofollow">Oliver Sjostrom</a> is particularly good.</p><p>That’s because it keeps things simple — you don’t need any equipment and do all five moves in the session from a similar position — and it’s still effective in working the upper and lower abs hard in a short amount of time.</p><h3 class="article-body__section" id="section-watch-oliver-sjostrom-s-10-minute-abs-workout"><span>Watch Oliver Sjostrom’s 10-minute abs workout</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/nxNIM1R6eP4" allowfullscreen></iframe></div></div><p>You do two rounds of five exercises in the session, working for 45 seconds and then resting for 15 seconds in between moves. While you don’t need any equipment for it, if you’re working on a hard floor, using one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats</a> will make things more comfortable.</p><p>Sjostrom does the workout with you, and during the rest periods the next exercise is displayed on screen, so you know what’s coming up.</p><p>Since you’re working to time rather than reps, the aim is to keep moving at a steady pace throughout each 45-second set — try to match the rhythm Sjostrom is working at if you can, but focus on maintaining good form and engaging your core correctly above all.</p><div><blockquote><p>Since you’re working to time rather than reps, the aim is to keep moving at a steady pace throughout each 45-second set.</p></blockquote></div><p>The work periods are pretty long and the session will have your abs burning from halfway through the first minute of action, so if you need to take extra breaks at times, then do so — just try to get back into it as quickly as you can to maximize the benefits of this short workout.</p><p>While the session doesn’t have any twisting or side-focused moves to target the obliques, the five moves you’ll be doing do work both the upper and lower abs, along with the deeper core muscles.</p><p>This is a very targeted abs workout, and while it will certainly tick off your core session for the week, it’s not doing a lot for the rest of your body or your cardiovascular fitness. That means it’s worth doing it in turn with a full-body strength session, or even as a finisher for another workout if you have time.</p><p>If you want to stick with the 10-minute, no-equipment theme, then this <a href="https://www.tomsguide.com/wellness/fitness/forget-weights-you-only-need-10-minutes-and-this-7-move-workout-to-build-full-body-strength-and-muscle">short full-body workout</a> is a good option to rotate with this core session in your routine. If you can train three times a week consistently, even working for just 10 minutes at a time can yield impressive results.</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><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/DWliw6KDFwm/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Not sit ups or crunches — I swapped them for this one lesser-known core move and my abs have never felt stronger ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-crunches-i-swapped-them-for-this-one-lesser-known-core-move-and-my-abs-have-never-felt-stronger</link>
                                                                            <description>
                            <![CDATA[ The bear plank leg reach challenges your core stability and strength ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fWymoRHtGz93mXzDdoeUU7</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bSQGDiwoLcXZP86D9LmkaD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 16 Jun 2026 07:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bSQGDiwoLcXZP86D9LmkaD-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty/Luca Sage]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman doing a bear plank]]></media:description>                                                            <media:text><![CDATA[a photo of a woman doing a bear plank]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman doing a bear plank]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bSQGDiwoLcXZP86D9LmkaD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Before going through pregnancy and childbirth, I never shied away from sit ups, crunches, and other abdominal exercises that involved spinal flexion. However, a lingering case of postpartum diastasis recti made all of those exercises off-limits, so I had to rethink the way I trained my core. </p><p>My pelvic floor physical therapist often assigned bear plank leg reaches during our appointments. As a certified personal trainer I was certainly familiar with the move, but regretfully I’d never incorporated them into my routine on a consistent basis. Trying them in her office left me shaking after a set and sore the next day, and that was all the evidence I needed to start doing them more regularly. </p><p>Bear plank leg reaches are incredibly effective at targeting the deepest muscles of our core, like the transverse abdominis and internal obliques. The more surface level muscles like the rectus abdominis and external obliques also kick into gear, so this one movement can train multiple abdominal muscles at the same time.</p><p>Below I’ll go over how to do bear plank leg reaches, their benefits, and ways to modify or progress the exercise. Grab a <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a> and give them a try.</p><h2 id="how-to-do-bear-plank-leg-reaches">How to do bear plank leg reaches</h2><p>Check in with your doctor before trying this exercise or any new activity. Bear plank leg reaches may look simple but they’re challenging to master. Consider meeting with a certified personal trainer for guidance on correct form, appropriate modifications for your fitness level, and proper progressions when you’re ready.</p><p>You’ll just need a yoga mat for this exercise. If you have sore knees, you may want to use a rolled up towel or pillow for additional cushioning. </p><p>Start with one set of 8 reps per side. After you’ve built up some strength and stability, increase to 10-12 reps on each side. You can also gradually increase the number of sets you do. </p><p>Bear plank leg reaches can be done on their own, as a part of your current core routine, or as a warm-up for lifting, running, or other workouts. </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/yNCNFmSK8_c" allowfullscreen></iframe></div></div><p>Here’s how to do them:</p><ul><li>Come to all fours on the mat.</li><li>Engage your core muscles.</li><li>Lift your knees about 1-2 inches off the mat.</li><li>Extend your right leg behind you, keeping your hips square to the mat.</li><li>Pause briefly.</li><li>Bring your right leg back to the starting position.</li><li>Extend your left leg behind you, keeping your hips square to the mat.</li><li>Pause briefly.</li><li>Bring your left leg back to the starting position.</li><li>Continue alternating between your two sides for 8-12 reps per side.</li></ul><h2 id="what-are-the-benefits-of-bear-plank-leg-reaches">What are the benefits of bear plank leg reaches?</h2><p>Popular core exercises like crunches and sit ups are great for targeting the rectus abdominis (or “six pack”), but they aren’t as effective for strengthening the deeper muscles of your core like the transverse abdominis and internal obliques. </p><p>Bear plank leg reaches require effort from many different core muscles at once – the rectus abdominis, transverse abdominis, internal and external obliques, and pelvic floor muscles. Additionally, your shoulders, back, quads, and glutes have to work in tandem to keep proper form and body positioning. </p><p>Extending your leg in the “reach” portion of the exercise trains your core muscles to stabilize the pelvis and spine. This can translate to better balance, improved athletic performance, and a reduced chance of certain injuries. </p><h2 id="how-to-modify-bear-plank-leg-reaches">How to modify bear plank leg reaches</h2><p>Bear plank leg reaches are a progression from <a href="https://youtu.be/HV2ME5C4Fhs?si=mgRHxOpp7GwCQ54l"><u>bear planks</u></a>, so if the “reach” element seems too difficult, try performing the exercise in its standard form. Once you can hold the position for 30-45 seconds, try adding the leg reach back in. </p><p>You can also build up to performing bear plank leg reaches by practicing <a href="https://youtu.be/QABW99qPiNM?si=4_BspuuBa_l7MSXT"><u>birddogs</u></a>. This move targets a lot of the same muscles in a similar way, but with your knees on the mat.  </p><h2 id="how-to-progress-bear-plank-leg-reaches">How to progress bear plank leg reaches</h2><p>When bear plank leg reaches start to feel easy, there are ways to make the move even more challenging. </p><p>The <a href="https://youtu.be/kphx34aA9Ik?si=AWcZ2O7YzuqVG8Yf"><u>bear plank birddog</u></a> is an advanced exercise that requires a high level of core strength and stability. In addition to extending your leg, you’ll simultaneously extend your opposite arm. Try this movement only after you’ve mastered bear plank leg reaches. </p><p>You can also add ankle weights when performing the exercise. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/tvs/watching-the-world-cup-on-a-samsung-tv-change-these-5-sound-and-picture-settings" target="_blank">Watching the World Cup on a Samsung TV? Change these 5 sound and picture settings</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams" target="_blank">How to watch World Cup 2026: live stream every game for free from anywhere in the world, tournament starts today!</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ It only takes 4 exercises and 1 dumbbell to sculpt your core, build your lower body, and burn fat, according to this personal trainer ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/it-only-takes-4-exercises-and-1-dumbbell-to-sculpt-your-core-build-your-lower-body-and-burn-fat-according-to-this-personal-trainer</link>
                                                                            <description>
                            <![CDATA[ It only takes 4 exercises and 1 dumbbell to sculpt your core, build your lower body, and burn fat, according to this personal trainer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ya9gqhBpNFzZ7os9xg6GdW</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cRDXKizRgkJr6VLtrxPT8F-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 08:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cRDXKizRgkJr6VLtrxPT8F-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty/Cavan Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[this woman holding a dumbbell workout]]></media:description>                                                            <media:text><![CDATA[this woman holding a dumbbell workout]]></media:text>
                                <media:title type="plain"><![CDATA[this woman holding a dumbbell workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cRDXKizRgkJr6VLtrxPT8F-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Looking for a quick dumbbell workout that’ll sculpt your core and lower body, using just one dumbbell? You’ve landed in the right place. This workout, created by personal trainer <a href="https://www.instagram.com/b.palmer_/" target="_blank" rel="nofollow">Brandon Palmer</a>, and it hits your core, waist, and lower body using just six exercises. All the exercises can be done standing, so this is a great one to bookmark if you’re on the move or in a busy gym.</p><p>As a reminder, if you’re new to exercise, you’re returning to exercise following an extended break, you’re pregnant or postpartum, or you’re dealing with an injury, it's always best to seek personalized advice from a qualified professional. </p><h2 id="what-is-the-workout-4">What is the workout? </h2><p>You can follow along with Palmer, who demonstrates all of the exercises in his workout video. All you’ll need is your bodyweight and a set of dumbbells (check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a> for working out at home here). </p><p>When it comes to selecting the right weight for your workout, remember that the correct weight will feel challenging but not impossible by your final few reps. If you feel like you’re compromising your form to finish your reps, the weight is too heavy, and you’re putting yourself at risk of injury. </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/DZXzHtvRwwR/" target="_blank">A post shared by Brandon Palmer (@b.palmer_)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li><strong>High knees and dumbbell overhead hold: 10 reps </strong>Hold the dumbbell with both hands above your head and really engage your core, thinking about squeezing your belly button into your spine. Lift one foot off the floor, and keeping a 90-degree bend in your leg, drive your knee towards your torso, before lowering it back to the floor. Repeat on the other side.</li><li><strong>Oblique crunches: 10 per side:</strong> Start with your feet slightly wider than hip-width apart. Holding a dumbbell on one side, take the opposite hand behind your head, and complete an oblique crunch, taking your elbow towards your knee. Think about the movement coming from your torso, not your elbow. Complete all your reps on one side before switching to the other.</li><li><strong>Squats and dumbbell swings: 10 reps. </strong>Take your feet slightly wider than hip-width apart. Send your hips down and back into a squat. As you stand up, push through your heels and complete a dumbbell swing, swinging the weight in line with your torso and squeezing your glutes at the top of the movement. That’s one rep.</li><li><strong>Dumbbell snatches: 10 per side</strong> Start with the dumbbell between your feet, which should be hip-width apart. Grip the weight overhand with one hand, lift your chest, and send your glutes downward. Engage your core, keep your spine neutral. Drive up through your feet and begin pulling the dumbbell upwards, lifting the hips and shoulders together. Keep the dumbbell close to your body and bend your elbow as you pull the weight, snapping the hips into extension in a standing position. Send the weight up and lift it above your head, locking your arm out at the top. Do all 10 reps on one side before switching to the other.</li></ul><p>Do three to four rounds of the circuit for a full workout. </p><h2 id="what-are-the-benefits-9">What are the benefits?</h2><p>All of these exercises help you build<a href="https://www.tomsguide.com/features/what-is-functional-training"> functional fitness</a> — by this, we mean the kind of fitness you need to lift something heavy from the floor or carry a heavy bag of groceries. As you’ll be lifting the weight above your head during exercises like high knees and <a href="https://www.tomsguide.com/how-to/how-to-snatch-to-maximize-muscle-growth">dumbbell snatches</a>, your core will have to fire up to keep your body stable as you hold the weight above your head and move your lower body. </p><p>Strong abs are about far more than a visible six-pack — your core is your body’s corset, helping stabilize the body and protect your spine from injury. In these <a href="https://www.tomsguide.com/face-off/isolation-vs-compound-exercises-which-is-better-for-building-muscle">compound movements,</a> your core will be working hard, but you’re likely to burn a lot more calories than you would during planks, sit-ups, and crunches. </p><p>As Palmer points out, when paired with cardio workouts, a balanced diet with enough protein, fruits and vegetables and water, workouts like this can help you burn fat and build muscle. </p><p>If you are looking to get in shape, aim to complete workouts like this three times a week, and increase your weights slowly over time to ensure you’re challenging your body. To lose weight and keep it off, you’ll need to ensure you’re in a caloric deficit — in other words, burning more calories than you consume. One of the easiest ways to track this is to strap one of the <a href="https://www.tomsguide.com/us/best-fitness-trackers,review-2066.html">best fitness trackers</a> to your wrist. </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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/tvs/watching-the-world-cup-on-a-samsung-tv-change-these-5-sound-and-picture-settings" target="_blank">Watching the World Cup on a Samsung TV? Change these 5 sound and picture settings</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams" target="_blank">How to watch World Cup 2026: live stream every game for free from anywhere in the world, tournament starts today!</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A Pilates instructor shares a 6-move routine for over-60s to build balance, mobility and functional core strength ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/a-pilates-instructor-shares-a-6-move-routine-for-over-60s-to-build-balance-mobility-and-functional-core-strength</link>
                                                                            <description>
                            <![CDATA[ Try these six reformer Pilates exercises from a qualified instructor. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">8TebJurwJt4RoGyE9qsQ7U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YtoQ3QqvC83hcAX6Yg4oCF-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 15 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 18 Jun 2026 08:56:03 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YtoQ3QqvC83hcAX6Yg4oCF-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Mature woman in blue activewear in a reformer Pilates class]]></media:description>                                                            <media:text><![CDATA[Mature woman in blue activewear in a reformer Pilates class]]></media:text>
                                <media:title type="plain"><![CDATA[Mature woman in blue activewear in a reformer Pilates class]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YtoQ3QqvC83hcAX6Yg4oCF-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I love Pilates. And the one thing I love more than mat Pilates? A reformer. This style of exercise has helped build a stronger core, improve posture, increase shoulder stability, and feel more balanced and centered over the last year or so.</p><p>This six-move reformer Pilates sequence is designed for clients over 60, with an emphasis on safe strength-building, improved balance, joint mobility, and deep core activation. </p><p>Another bonus is that it's a <a href="https://www.tomsguide.com/features/forget-crunches-this-beginner-friendly-workout-challenges-your-abs-in-7-exercises">beginner-friendly Pilates workout</a>, which means you can keep the pace slow, intentional, and controlled — exactly the way we want Pilates exercises to be performed. </p><p>While this routine is performed using a reformer, you can do all of the exercises without one, so I will provide modification guidance below if you don't have a reformer or studio near you. As always, seek advice from a physical therapist or relevant medical professional if you're unsure about an injury, health condition, or similar.</p><h3 class="article-body__section" id="section-what-are-the-pilates-exercises"><span>What are the Pilates exercises?</span></h3><p>This routine was designed by Sol Bouille, founder of <a href="https://www.theislandstudio.co.uk" target="_blank" rel="nofollow">The Island Studio</a>. Try the moves below and <strong>follow the steps:</strong></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/DZaH1boiIoB/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-move-1-footwork"><span>Move 1: Footwork</span></h3><p>This is a foundational exercise to warm up the body, activate the legs, and establish alignment through the pelvis and spine. It builds lower-body strength and joint mobility. Press evenly through both feet, maintaining a neutral pelvis and soft ribcage. Encourage slow, controlled presses and returns, focusing on stability rather than speed.</p><ul><li>Lie on your back with your head resting on the headrest and your feet hip-width apart on the footbar. Find a neutral pelvis, where your hips feel level and your spine maintains its natural curve.</li><li>Press evenly through both feet to extend your legs, imagining you’re pushing the carriage away with control rather than locking your knees. Keep your pelvis stable and your ribcage relaxed as the carriage moves.</li><li>Pause briefly at the end of the movement, then slowly bend your knees to return the carriage home, resisting the springs and maintaining the same alignment through your pelvis and spine.</li><li>Focus on moving smoothly and evenly through both legs, feeling the glutes, hamstrings and quadriceps working together while keeping the upper body relaxed.</li></ul><h3 class="article-body__section" id="section-move-2-bridges"><span>Move 2: Bridges</span></h3><p>Bridging supports mobility through the spine while strengthening the posterior chain and improving pelvic control. It builds spinal articulation, glute strength, and pelvic stability. Roll up and down one vertebra at a time. Encourage glute engagement without over-compressing the lower back. Keep your breath steady and controlled.</p><ul><li>Lie on your back with your feet placed firmly on the footbar and your knees bent. Find a neutral pelvis and take a deep breath in to prepare.</li><li>As you exhale, gently tilt the pelvis and begin peeling the spine off the carriage one vertebrae at a time, lifting the hips into a bridge position. At the top, create a long line from your shoulders to your knees while keeping the ribs soft and the glutes engaged.</li><li>Inhale at the top, then exhale as you slowly roll back down through the spine, melting each vertebrae onto the carriage until you return to your starting position.</li><li>Focus on moving through the spine sequentially, maintaining control throughout the movement. Use the glutes and hamstrings to support the lift while avoiding excessive arching or compression in the lower back.</li></ul><h3 class="article-body__section" id="section-move-3-hands-in-straps"><span>Move 3: Hands in straps</span></h3><p>This supine arm series builds upper-body strength while maintaining core engagement and shoulder stability. Keep your shoulders grounded and ribs contained. Move the arms with control, avoiding momentum. Focus on smooth, even resistance throughout.</p><ul><li>Lie supine on the carriage with your head supported and your feet either in tabletop or long through the footbar, depending on your setup. Take hold of the straps with your arms reaching up toward the ceiling, finding a neutral pelvis and steady core engagement.</li><li>Set the shoulders down and wide, keeping the collarbones broad and the neck relaxed. As you exhale, begin the arm series by moving the arms slowly and with control, maintaining consistent spring tension throughout the movement.</li><li>Inhale to return or prepare, and exhale to deepen core engagement as the arms move through their range. The focus is on isolating the movement in the shoulder joints while keeping the trunk completely stable.</li><li>Each rep should feel deliberate and controlled, with equal emphasis on the out and return phases of the movement.</li></ul><h3 class="article-body__section" id="section-move-4-feet-in-straps-leg-circles"><span>Move 4: Feet in straps/ leg circles</span></h3><p>A gentle but effective way to improve hip mobility and strengthen deep core stabilizers. It focuses on stability and lower-body control. Maintain a stable pelvis and avoid excessive tension in the lower back. Move slowly through each range, prioritizing control and alignment as you circle your legs.</p><ul><li>Lie supine with both feet in the straps, arms long by your sides and pelvis in a neutral position. Press the ribs gently down into the carriage and find length through the spine before initiating movement.</li><li>Begin small, controlled circles from the hip joints, keeping the pelvis as still as possible. The movement should originate from the femurs, not the lower back, with the core working continuously to stabilize the carriage.</li><li>Maintain smooth, even tempo in both directions, gradually increasing range only if stability is maintained.</li></ul><h3 class="article-body__section" id="section-move-5-lunges"><span>Move 5: Lunges</span></h3><p>A supported lunge pattern to improve functional strength and stability. You can build balance and coordination while strengthening the lower body. Keep movement slow and controlled. Encourage alignment through the front knee and a stable pelvis. Focus on balance rather than depth.</p><ul><li>Set up in a supported lunge position with the front foot grounded on the side of the reformer and the back leg supported on the carriage. Organize the pelvis so both hip points face forward and the spine remains tall.</li><li>Lower into the lunge with control, tracking the front knee over the second and third toes. Press back out through the foot, maintaining steady alignment and avoiding any collapse through the pelvis or ribcage.</li><li>The emphasis is on stability, control and coordinated strength through both legs, rather than the depth of the lunge.</li></ul><h3 class="article-body__section" id="section-move-6-half-plank"><span>Move 6: Half-plank</span></h3><p>A modified plank variation to build core and upper-body strength in a safe, accessible position. This focuses on core strength, shoulder stability, and postural control. Maintain a strong neutral spine with steady breath. Avoid collapsing through the shoulders or lower back. Emphasize control over duration.</p><ul><li>Hands on the footbar, thumbs forward, chest away from hands, creating a long line from shoulders through hips to knees.</li><li>Engage the core gently to support the spine without bracing or gripping.</li><li>Hold a steady neutral position, maintaining even weight through both shoulders and avoiding any sinking in the lower back or collapsing through the chest.</li><li>Breath should remain calm and controlled, supporting stability rather than driving movement.</li><li>Gently open the carriage by allowing the shoulders to move slightly away from the line of the hands. Maintain your alignment throughout, core engaged, ribs contained and hips steady.</li><li>Only travel as far as you can maintain full control of the position. The movement should be small, precise, and driven by stability through the core and shoulders rather than momentum.</li><li>Pause briefly at your end range without losing shape, then slowly draw the carriage back in, “zipping up” through the lower abdominals to re-establish full support and control.</li></ul><h3 class="article-body__section" id="section-how-to-modify-the-exercises"><span>How to modify the exercises</span></h3><ul><li><strong>Footwork</strong>: You don't really need a reformer for this. Instead, use any stable surface, like the edge of a bed or sofa, a step, or a staircase. You just need to be able to press the balls of your feet into the surface and encourage a range of movement without any limitations for space.</li><li><strong>Bridges: </strong><a href="https://www.tomsguide.com/news/this-exercise-is-better-than-squats-when-it-comes-to-working-your-glutes">Perform bridges</a> on one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> instead. This might feel easier, as the ground is more stable, but you could also place a Pilates ball or similar beneath your mid-back to challenge stability and balance, working your core and glutes harder.</li><li><strong>Hands in straps: </strong>Consider anchoring resistance bands on either side of you instead. This allows you to work through resistance without the reformer to hand.</li><li><strong>Leg circles:</strong> Instead, perform using your bodyweight and creating large, controlled circles with your lower back supported on a mat or similar. To increase resistance without a reformer, consider the<a href="https://www.tomsguide.com/best-picks/best-ankle-weights"> best ankle weights</a>.</li><li><strong>Lunges:</strong> Lunges can be performed anywhere, whether that's at home, stationary, or walking. You could hold a Pilates ball in both hands or consider adding dumbbells or kettlebells to increase resistance. Check out these<a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40"> lunge alternatives</a>, too.</li><li><strong>Half-plank:</strong> Planks can also be performed anywhere, whether your knees are supported or not. Perform on the ground or a yoga mat, or consider checking out these <a href="https://www.tomsguide.com/round-up/11-best-plank-variations-to-build-core-strength-and-muscle">plank variations </a>to keep things interesting.</li></ul><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><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/DZRprdLkZsr/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-training-like-an-elite-soccer-player-using-these-4-strength-and-recovery-tips-from-man-city-w-f-c" target="_blank">I'm training like an elite soccer player using these 4 strength and recovery tips from Man City W.F.C.</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ According to a Pilates instructor, this one exercise flattens your stomach more than 100s of crunches. I gave it a go for a week, and here are my results ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/according-to-a-pilates-instructor-this-one-exercise-flattens-your-stomach-more-than-100s-of-crunches-i-gave-it-a-go-for-a-week-and-here-are-my-results</link>
                                                                            <description>
                            <![CDATA[ According to a Pilates instructor, this one exercise flattens your stomach more than 100s of crunches. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FcQ2i6KgYATB3vUVtGGzBn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/VeMb3c2caDU9WUndX4HoCD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 14 Jun 2026 08:45:00 +0000</pubDate>                                                                                                                                <updated>Sun, 14 Jun 2026 12:13:23 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/VeMb3c2caDU9WUndX4HoCD-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman with strong abs]]></media:description>                                                            <media:text><![CDATA[a photo of a woman with strong abs]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman with strong abs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/VeMb3c2caDU9WUndX4HoCD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’m here to tell you, your core isn’t the six-pack muscles on the front of your body. Instead, it’s a cylinder that wraps around your torso, including your lower back, glutes, hips, and pelvic floor. </p><p>Far from just sculpting visible abs, a rock-solid core works as your body’s corset, protecting your lower back from injury, improving your balance and stability, and enhancing your posture. </p><p>One Pilates instructor says the humble Pilates <a href="https://www.tomsguide.com/news/how-to-do-a-reverse-plank-to-strengthen-your-lower-back-glutes-hamstrings-and-abs">reverse plank</a> is more effective than hundreds of crunches, so to find out more, I unrolled my yoga mat, grabbed a foam roller, and gave this move a go. Read on to find out what happened. </p><p>As a reminder, what works for me might not be right for you and your body. If you’re a complete beginner, you’re pregnant or postpartum, or you’re currently working out with an injury, it’s always best to seek personalized advice from a qualified professional.</p><h2 id="how-to-do-a-pilates-reverse-plank">How to do a Pilates reverse plank </h2><p>The exercise, as demonstrated by Pilates instructor Chrissi Glow, targets the posterior chain, as well as the deep muscles in your midsection. Here’s how to do it with good form: </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/DY8cR8vNw0p/" target="_blank">A post shared by Chrissi Glow | Pilates & Wellness (@chrissiglow)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li>Sit on an exercise mat and extend your legs out in front of you. Lower your torso back, resting on your elbows, which should be stacked underneath your shoulders. Lie your palms flat on the floor with your fingers pointing towards your toes.</li><li>Keeping your gaze toward your toes, roll your shoulders back and down away from your ears.</li><li>Brace your core, thinking about sucking your belly button into your spine, and drive through your heels to lift your hips toward the ceiling.</li><li>Squeeze your glutes as hard as you can, and push your hips up so that your body forms a straight line from your head to your heels.</li><li>Keep your neck long — don’t throw your head back, as this can put strain on your neck.</li><li>Hold this position for 20-30 seconds, breathing in through your nose and out through your mouth. Focus on not letting your hips sag.</li></ul><p>To increase the intensity, as Glow has done, from this reverse plank position, raise one leg to the ceiling, then the other. You can also add resistance by using a set of the<a href="https://www.tomsguide.com/best-picks/best-ankle-weights"> best ankle weights,</a> or, for instability, using a foam roller or Pilates ball, or both, if you want to really burn your core.</p><h2 id="what-are-the-benefits-10">What are the benefits?  </h2><p>I’ve been practicing Pilates for the past 15 years — it’s gotten me to the start line of six marathons and helped me rebuild my core following the birth of my son. This move is no joke — it blasts your midsection, but your glutes have to be working overtime to stop your hips from sagging in this move. </p><p>While you might not consider them to be part of your "core," weak glutes force your lower back to overcompensate. To keep your hips lowering toward your mat in this exercise, and to lift your leg towards the ceiling if you’re doing that variation, your glutes have to work with your lower back and hamstrings. This, in turn, can help strengthen the muscles around your pelvis, which stabilize your spine. </p><p>Of course, physically I look the same, having done this exercise as my ab finisher for the past week, but what started as a super tricky move, especially when performed on a foam roller, did get easier with practice. </p><p>The added instability of the foam roller forced my deep transverse abdominis to engage to keep me from wobbling, and I felt my entire midsection kept under tension throughout this move. </p><p>What are you waiting for? Even with no equipment, drop down to your exercise mat and give this exercise a try. </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/DZRprdLkZsr/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’m a personal trainer over 40 — these are the 4 exercises I do daily to safeguard my strength and stability as I get older ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-over-40-these-are-the-4-exercises-i-do-daily-to-safeguard-my-strength-and-stability-as-i-get-older</link>
                                                                            <description>
                            <![CDATA[ Start doing these exercises now to maintain your independence as you age ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kU3yzmoSoM2ZFxQtvtfNeY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/jH67jfEdUzySxRhvEc5QbW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 14 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jen@jenrizzutofitness.com (Jennifer Rizzuto) ]]></author>                    <dc:creator><![CDATA[ Jennifer Rizzuto ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/V3yeuQZGZePvWRoSmHyxp8.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/jH67jfEdUzySxRhvEc5QbW-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images/Tom Werner]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman lifting weights]]></media:description>                                                            <media:text><![CDATA[a photo of a woman lifting weights]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman lifting weights]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/jH67jfEdUzySxRhvEc5QbW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When I was younger, my main fitness goals revolved around faster runs, heavier lifts, and a leaner physique.</p><p>Once I turned 40, a few recurring injuries made me realize that I needed to shift my focus. I started to train with longevity in mind, paying more attention to deep core stability, pain-free mobility, optimal range of motion, and functional strength.</p><p>I began incorporating the following four exercises into my regular routine. These moves target key muscle groups that not only support the pelvis and spine, but also facilitate every day movement and maintain proper posture. </p><p>If you’re nearing (or over) 40, have a <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a> and a set of <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells"><u>dumbbells</u></a> handy, and want to preserve your strength as you get older, give these exercises a try.</p><h2 id="how-to-do-the-4-exercises">How to do the 4 exercises</h2><p>Consult with your medical team before starting any new activity. If you’re a beginner, consider meeting with a certified personal trainer to learn proper exercise form. A trainer can also provide modifications when necessary and progress the exercises as needed. </p><p>You’ll need a yoga mat and a set of moderately-heavy dumbbells for this workout.</p><p>Start by doing 1-2 sets of the dumbbell front squats, bear plank leg reaches, and renegade rows for 8-10 reps. Hold the side plank for 15-30 seconds. Once your strength improves, gradually increase to 3 sets of 10-12 reps and 30-45 second holds. You can perform these exercises as a circuit and complete one set of each exercise before repeating, or you can perform all sets of a given exercise before moving on to the next. </p><p>If you’re unable to complete at least 8 reps with good form, use a lighter weight. If you can perform 12 reps without feeling fatigued, use a heavier weight.</p><p>Here’s how to do the exercises:</p><h3 class="article-body__section" id="section-1-dumbbell-front-squats"><span>1. Dumbbell front squats</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/B86Zj72LwzA" allowfullscreen></iframe></div></div><ul><li>Stand tall with your feet hip-width apart, holding a dumbbell in each hand.</li><li>Engage your core muscles.</li><li>Bring the dumbbells to your shoulders.</li><li>Hinge your hips behind you, as if you were about to sit down.</li><li>Bend your knees and lower your hips towards the floor.</li><li>Pause briefly.</li><li>Stand back up.</li><li>Continue for 10-12 reps.</li></ul><h3 class="article-body__section" id="section-2-side-plank"><span>2. Side plank</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/9dNL_mtObGQ" allowfullscreen></iframe></div></div><ul><li>Lie on your left side on a yoga mat.</li><li>Place your left elbow directly underneath your left shoulder.</li><li>Lengthen your legs and engage your core.</li><li>Lift your hips off the mat, keeping your shoulders, hips, and feet aligned.</li><li>Hold for 15-45 seconds.</li><li>Repeat on the right side.</li></ul><h3 class="article-body__section" id="section-3-bear-plank-leg-reach"><span>3. Bear plank leg reach</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/yNCNFmSK8_c" allowfullscreen></iframe></div></div><ul><li>Come to all fours on the mat.</li><li>Engage your core.</li><li>Lift your knees off the mat.</li><li>Extend your left leg behind you.</li><li>Pause briefly.</li><li>Bring your left leg back to the starting position.</li><li>Extend your right leg behind you.</li><li>Bring your right leg back to the starting position.</li><li>Continue alternating between the two sides for 8-10 reps each side.</li></ul><h3 class="article-body__section" id="section-4-renegade-rows"><span>4. Renegade rows</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Q28cLuweLv4" allowfullscreen></iframe></div></div><ul><li>Come to all fours on the mat, holding a dumbbell in each hand.</li><li>Engage your core.</li><li>Extend both legs behind you, keeping your shoulders, hips, and feet in alignment.</li><li>Squeeze your left shoulder blade, bend your left elbow, and lift the dumbbell towards your left hip.</li><li>Pause briefly.</li><li>Lower the dumbbell back to the mat.</li><li>Squeeze your right shoulder blade, bend your right elbow, and lift the dumbbell towards your right hip.</li><li>Pause briefly.</li><li>Lower the dumbbell back to the mat.</li><li>Continue for 8-10 reps on each side.</li></ul><h2 id="benefits-of-the-4-exercises">Benefits of the 4 exercises</h2><p>The exercises in this workout address deep core stability, lower body power, and posterior chain strength. These aspects are crucial for everyday activities like walking, running, climbing stairs, and maintaining an upright posture. </p><p>You’ll target the quadriceps, hamstrings, glutes, transverse abdominis, internal and external obliques, middle and lower trapezius, rhomboids, and latissimus dorsi with these moves. The stronger these muscles are, the better you’ll be able to move, balance, and avoid injury.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/fitness/i-tried-these-glute-bridge-variations-to-strengthen-my-hamstrings-heres-what-happened" target="_blank">I tried these glute bridge variations to strengthen my hamstrings — here's what happened</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/push-ups-are-the-exercise-you-can-do-anywhere-3-variations-to-try-if-you-want-to-build-chest-strength" target="_blank">Push-ups are the exercise you can do anywhere — 3 variations to try if you want to build chest strength</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/sit-all-day-try-these-7-back-exercises-from-a-physical-therapist-right-now" target="_blank">Sit all day? Try these 7 back exercises from a physical therapist right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ No sit-ups, no equipment needed — this 10-minute core workout sculpts your abs and obliques ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/no-sit-ups-no-equipment-needed-this-10-minute-core-workout-sculpts-your-abs-and-obliques</link>
                                                                            <description>
                            <![CDATA[ If you have 10 minutes and space to lie down, you have everything you need to tackle this effective abs and obliques workout. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VMeQE82ktXTn26reMiqqoE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BXMcxtjVyeFkYjsGrtBQPD-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sat, 13 Jun 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick has been a journalist since 2012 and has spent most of that time writing about health and fitness for a variety of publications. Nick spent nine years working on the Coach magazine and website before moving to the fitness team at Tom’s Guide in 2024. Nick is a keen runner and also the founder of YouTube channel &lt;a href=&quot;https://www.youtube.com/channel/UCOBM9FasII4dKbyE_HKkbjw&quot;&gt;The Run Testers&lt;/a&gt;, which specialises in reviewing running shoes, watches, headphones and other gear.&lt;/p&gt;&lt;p&gt;Nick has covered all aspects of health and fitness throughout his career, interviewing experts and celebrities, trying fitness classes and running marathons, all in the name of providing readers with the information they need to get the most out of an active lifestyle.&lt;/p&gt;&lt;p&gt;Nick ran his first marathon in 2016 after six weeks of training for a magazine feature and subsequently became obsessed with the sport. He now has PBs of 2hr 25min for the marathon and 15min 30sec for 5K, and has run 16 marathons in total, as well as a 50-mile ultramarathon.&lt;/p&gt;&lt;p&gt;Nick runs 60-90 miles a week and races regularly with his club, which gives him a lot of opportunity to test out running gear: he has tested and reviewed hundreds of pairs of running shoes, as well as fitness trackers, running watches, sports headphones, treadmills, and all manner of other kit. Nick is also a qualified Run Leader in the UK.&lt;/p&gt;&lt;p&gt;Nick is an established expert in the health and fitness area and along with writing for several publications, including &lt;a href=&quot;https://www.livescience.com/author/nick-harris-fry&quot;&gt;Live Science&lt;/a&gt;, &lt;a href=&quot;https://www.expertreviews.co.uk/authors/nick-harris-fry&quot;&gt;Expert Reviews&lt;/a&gt;, &lt;a href=&quot;https://www.wareable.com/author/n.harris-fry&quot;&gt;Wareable&lt;/a&gt;, &lt;a href=&quot;https://www.coachweb.com/author/nick-harris-fry&quot;&gt;Coach&lt;/a&gt; and &lt;a href=&quot;https://www.getsweatgo.com/author/n.harrisfry&quot;&gt;Get Sweat Go&lt;/a&gt;, he has been quoted on &lt;a href=&quot;https://www.theguardian.com/thefilter/2024/oct/20/if-you-pay-more-than-4-youre-being-ripped-off-the-fair-price-for-14-everyday-items-from-cleaning-spray-to-olive-oil&quot;&gt;The Guardian&lt;/a&gt; and &lt;a href=&quot;https://www.independent.co.uk/life-style/health-and-families/london-marathon-2021-date-training-tips-summer-running-a9482486.html&quot;&gt;The Independent&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Nick graduated from the University of York in 2010 with a degree in Politics, Philosophy and Economics and worked in the NHS for three years, during which time he completed his NCTJ Diploma in Journalism at News Associates in London. Before starting on Coach and moving into health and fitness, Nick worked as a football journalist and lived in Kathmandu, Nepal for two years.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/BXMcxtjVyeFkYjsGrtBQPD-1280-80.png">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a man with strong abs]]></media:description>                                                            <media:text><![CDATA[a photo of a man with strong abs]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a man with strong abs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BXMcxtjVyeFkYjsGrtBQPD-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When it comes to training consistently to stay fit and healthy, working out what you’re actually prepared to do and not do regularly is vital.</p><p>For example, I love running and will happily do it for hours on end each week, but when it comes to strength training, I rarely have the motivation to train for longer than 10-15 minutes at a time.</p><p>That means I’ve pulled together a wide variety of 10-minute workouts I can do when I have the time and urge to train, and this 10-minute core session from fitness trainer<a href="https://www.instagram.com/katb_fit/?hl=en" target="_blank" rel="nofollow"> Kat Boley</a> is going straight on my to-do list.</p><p>It’s a six-move workout done at a fast pace that targets all the muscles in your core and you don’t need any equipment to do it, though if you have one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats,</a> it will make some of the moves more comfortable.</p><h3 class="article-body__section" id="section-watch-kat-boley-s-10-minute-abs-workout"><span>Watch Kat Boley’s 10-minute abs workout</span></h3><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/DZFbs_UlAgw/" target="_blank">A post shared by Kat Boley | Home Workouts for Women (@katb_fit)</a></p><p>A photo posted by  on </p></blockquote></div><p>There are six exercises in the workout, and you do three rounds of all six moves in total, resting as required but aiming to keep breaks short to keep the total time under 10 minutes.</p><p>You do 20 reps in total of the moves where you alternate sides, and 10 reps of the moves where you don’t. </p><p>Boley has demonstrated each move in her Instagram post, so scroll through to see how to do the exercises before you start.</p><ul><li><strong>Mountain climbers — 20 reps</strong></li><li><strong>Leg raises — 10 reps</strong></li><li><strong>Side plank dips (L) — 10 reps</strong></li><li><strong>Flutter kicks — 20 reps</strong></li><li><strong>Side plank dips (R) — 10 reps</strong></li><li><strong>Bridge kicks with twist — 20 reps</strong></li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.js" async></script><p>Aim to maintain a fast, controlled pace and complete the reps for each move without taking breaks to maximize <a href="https://www.tomsguide.com/features/time-under-tension-what-is-it-and-could-it-help-you-grow-muscle">time under tension</a> for your abs.</p><p>The session contains a mix of moves to challenge your entire core in different ways, so you hit the upper and lower abs, the obliques, and the deep stabilizing muscles in your core.</p><p>Along with strength, the session builds foundational stability that will transfer well to everyday life and other workouts, and the fast pace of the session means you cram a lot of effective exercise into just 10 minutes; just be prepared to work hard.</p><p>One 10-minute workout is not going to change everything about your health and fitness, but it’s a good place to start, and if you can line up two or three sessions like this to do each week, you’ll get into the great habit of training consistently.</p><p>In the long term, that’s what matters most — moving regularly and consistently, even if it is just for 10 minutes at a time, though if you can occasionally stretch to longer sessions then all the better.</p><p>I like core workouts like this to support my main sport of running because having a strong core helps to maintain good form deep into long races like marathons. It’s easy to tack this workout onto the start or end of an easy run too, since it is so short.</p><p>If even 10 minutes seems too long right now, you can try this <a href="https://www.tomsguide.com/wellness/workouts/no-equipment-no-repeat-exercises-this-7-minute-core-workout-sculpts-the-abs-and-obliques">seven-minute core workout</a> instead. Anything is always better than nothing!</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><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/DX_Bhf3jP_j/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I teach people to be strong and mobile after 60. These 3 moves bulletproof your joints, boost balance and unlock stability ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-teach-people-to-be-strong-and-mobile-after-60-these-3-moves-bulletproof-your-joints-boost-balance-and-unlock-stability</link>
                                                                            <description>
                            <![CDATA[ These three moves can help you build strong and mobile joints and muscles as you get older, especially in your later years. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PANPYqysX6ZSvoKwsQkD6R</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MwvJGkXd7oUhkHuK9yTZJA-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 13 Jun 2026 04:15:00 +0000</pubDate>                                                                                                                                <updated>Sat, 13 Jun 2026 09:35:03 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MwvJGkXd7oUhkHuK9yTZJA-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Older male in blue t-shirt holding dumbbells out at shoulder-height in a local park smiling]]></media:description>                                                            <media:text><![CDATA[Older male in blue t-shirt holding dumbbells out at shoulder-height in a local park smiling]]></media:text>
                                <media:title type="plain"><![CDATA[Older male in blue t-shirt holding dumbbells out at shoulder-height in a local park smiling]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MwvJGkXd7oUhkHuK9yTZJA-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The best exercises for strength and mobility as you get older don't need to be fancy or gym-friendly; they need to be <em>effective</em> and performed <em>consistently</em>. And these three moves only require one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats</a>.</p><p>I train clients of all ages, but I really enjoy working with people who are enjoying exercise in later life because, if I'm honest, that's where I get the most satisfaction watching strength, mobility and <a href="https://www.tomsguide.com/features/what-is-functional-training">functional fitness</a> transform.</p><p>Improving mobility is all about moving the joints through a range of movement (motion is lotion, after all); strengthening exercises help build strong muscle groups, bones and ligaments through resistance and loading. </p><p>I'm sharing three go-to exercises I believe you should add to your exercise routine, plus some of the benefits you can expect.</p><p><em>If you experience pain at any time, stop and rest. If you're working with an injury or health condition, or you're currently pregnant or postnatal, I recommend seeking advice before starting these exercises.</em></p><h2 id="watch-3-move-mobility-routine-2">Watch: 3-move mobility routine</h2><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/DZe_GvziUYQ/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p><strong>The routine:</strong> 3-4 sets, 8-10 reps per move</p><ul><li><strong>Side leg raises:</strong> Lie on your side with your elbow resting on your mat stacked beneath your shoulder. Push up through your elbow and shoulder to protect the joints. Stack your legs and bend your knees. Keep a soft bend in the top knee as you lift the leg high into the air, squeezing your core and glutes. Pause, ensuring your hips and chest stay facing forward, then lower the leg again. Wrap a band above your knees or hold a dumbbell to your hip to progress the move. You can also add a pulse. Switch sides.</li><li><strong>Seated leg openers:</strong> Sit upright on your mat and extend both legs in front of you. Engage your core and imagine a piece of string coming out of the crown of your head pulling you up to lengthen your spine. Place your hands behind your head and squeeze your shoulder blades together. Lift your right leg to hover a few inches, then open your leg with as much control as possible as far as you can. Pause, then draw the leg back to center and lower it. Switch sides. Consider adding a band for more challenge or placing your hands on the mat for less.</li><li><strong>Cossack squats</strong>: Stand with your feet hip-width apart, then step your left foot out to the side as wide as you can, bend the knee and lower into a side lunge. Ensure you're bracing your core and staying upright with a straight back and your gaze ahead. Lower as far as you can, sending your butt back and down. Pause, then drive up powerfully through your left leg and step to the starting position. Switch sides. For a beginner-friendly option, start with your feet planted and legs already wide, allowing you to move from side to side without stepping. For a progression, add a weight.</li></ul><h2 id="what-are-the-benefits-11">What are the benefits?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HCR5YvfinR9zDhhzfAs9Bh" name="workout 2_shutterstock_2458594235" alt="a senior woman smiling on a workout mat" src="https://cdn.mos.cms.futurecdn.net/v2/t:622,l:0,cw:6048,ch:3402,q:80/HCR5YvfinR9zDhhzfAs9Bh.jpg" mos="" align="middle" fullscreen="" width="6048" height="4024" 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>Each of these exercises brings something slightly different to the table. </p><p><strong>Side leg raises </strong>hit the outer glutes and open the hips and groin, also stretching down the inner thighs, known as the adductors. Hitting your glutes from different angles targets the muscles differently, and this movement pattern is crucial for abducting the hip away from the body using lateral motion.</p><p><strong>Seated leg openers </strong>move the leg away from the body using a slightly different <a href="https://www.tomsguide.com/wellness/fitness/what-are-the-3-planes-of-motion-for-exercise-and-why-do-they-matter">plane of motion</a>, stretching the inner thighs and groin, opening the hips and building strength around the pelvis and in the glutes. The seated version also tests posture and alignment as you engage your core, place your hands behind your head and focus on staying upright while pulling your elbows back to open your chest. </p><p><strong>Cossack squats</strong> build powerful muscles in the lower body, hitting your hips, glutes and legs while increasing mobility in your hips, knees and ankles. Try to stay upright and keep your core engaged by bracing your stomach. You can keep your toes facing forward or lift them to point into the air, which will externally rotate the hip and deepen the stretch in your hamstrings. This move is brilliant for building strength and mobility while improving balance and control.</p><div><blockquote><p>Each of these exercises brings something slightly different to the table. </p></blockquote></div><p>Focus on full control and constant tension through all phases of the exercises. There's no rush, and there are only three moves to work through, so take your time.</p><p>You can adjust the reps and sets as necessary, and play with the weights or equipment you use. I like to add dumbbells and a band above my knees, but to begin with, I would move toward lighter weights and full range of movement every rep until you feel more familiar.</p><p>Any time your hands are behind your head, focus on opening your chest and knitting both shoulders together; this is brilliant for practicing an upright position, improving posture and helping you avoid slouching or curling your spine.</p><p>Give these a try, and let us know how you get on in the comments.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40" target="_blank">I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/sit-all-day-try-these-7-back-exercises-from-a-physical-therapist-right-now" target="_blank">Sit all day? Try these 7 back exercises from a physical therapist right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I swapped my usual gym routine for this 5-move World Cup-inspired workout — and I really felt the burn ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-swapped-my-usual-gym-routine-for-this-5-move-world-cup-inspired-workout-and-i-really-felt-the-burn</link>
                                                                            <description>
                            <![CDATA[ I tried this five-move full-body workout inspired by the types of exercises World Cup players use to get fit and strong. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WWiQLc6NtLTkopAvV8mKd3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Kjqq5T3YvoprVGrqr2cJvW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 12 Jun 2026 05:30:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Kjqq5T3YvoprVGrqr2cJvW-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images- Catherine Ivill ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Declan Rice celebrating after scoring England&#039;s second goal against Andorra ]]></media:description>                                                            <media:text><![CDATA[Declan Rice celebrating after scoring England&#039;s second goal against Andorra ]]></media:text>
                                <media:title type="plain"><![CDATA[Declan Rice celebrating after scoring England&#039;s second goal against Andorra ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Kjqq5T3YvoprVGrqr2cJvW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Finally, the <a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">World Cup 2026 </a>kicked off, and I personally cannot wait. I've fully prepared my schedule to catch as many of the England games as possible, so you could say I'm invested. </p><p>Recently, I caught a peek at Jon Fisher (of<a href="https://www.101greatgoals.com/" target="_blank" rel="nofollow"> 101 Great Goals</a>) and his take on how to train like England's World Cup Stars. So, curiosity got the better of me, and I checked out the moves inspired by ballers like Declan Rice and Harry Kane.</p><p>You don't need the gym, and you can use minimal equipment. Here's what Fisher recommended, why and how to do each exercise yourself. I also put a quick workout together using the exercises Fisher provides, which you can check out below. Get ready for a serious burn, and grab one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats </a>to get started. </p><h2 id="watch-5-move-world-cup-inspired-workout">Watch: 5-move World Cup-inspired workout</h2><p>The workouts and exercises used by England’s biggest stars to improve strength, balance and mobility are simple enough to be recreated at home, without specialist equipment or professional coaching.</p><p>Fisher says, “People often assume professional football training is all about high-tech equipment and intense gym sessions, but a huge amount of it comes down to simple, repeatable movements done consistently.</p><p>“That’s why so many of these exercises translate so well to everyday fitness. They help with strength, balance, mobility and coordination, which are useful whether you’re playing 90 minutes or just trying to feel fitter and move better.”</p><p><u><strong>The moves:</strong></u></p><ul><li><strong>Single-leg balance stand: "</strong>Harry Kane’s career has included repeated ankle problems, so a huge part of his training focuses on strengthening and stabilizing the joint...Standing on one foot for <strong>30 seconds </strong>helps train the small stabilizing muscles around the ankle and improves balance. For anyone less confident, it can easily be done next to a kitchen worktop with fingertips resting lightly for support." You could try seated ankle circles to begin with. "A scarf or towel can also be looped around the foot for gentle resisted flexion," Fisher says.</li><li><strong>Monster walks: </strong>"Bukayo Saka’s game is built on explosiveness, agility and the ability to change direction in a flash, and that all starts with strong hips and glutes," says Fisher. "Place a band around the knees or ankles and take slow, controlled side or diagonal steps while keeping tension in the band. These fire up the glutes and hip muscles that power acceleration and quick turns. For a gentler option, people can hold onto a wall and take smaller sideways steps."</li><li><strong>20-minute walk: </strong>"Rice’s recovery routine could be the easiest fitness hack of all," says Fisher. "One of the simplest adaptations is the <strong>20-minute gentle walk</strong>. Rice uses low-impact cardio like cycling to get blood flowing and aid recovery, and for most people, a steady walk does exactly the same thing."</li><li><strong>Seated banded leg curl:</strong> "He also puts a big focus on hamstrings and flexibility," Fisher explains. "A home version of that can include a <strong>seated banded leg curl</strong>, pulling one foot back under the chair against light resistance, or a gentle <strong>stretching routine</strong> covering the hamstrings, hips, calves and chest."</li><li><strong>Resistance band rows: "</strong>Kobbie Mainoo’s upper-body training includes exercises like<strong> pull-ups and weighted push-ups</strong>, but the same muscle groups can be trained much more simply at home," Fisher says. "Mainoo’s strength work can be scaled for total beginners...For pulling strength, <strong>negative pull-ups or resistance band</strong> <strong>rows</strong> help work the back and arms. For pushing strength, <strong>wall push-ups or knee push-ups</strong> are a much more approachable version of the weighted push-up work footballers use."</li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.js" async></script><p>Now for a quick workout I've put together using Fisher's advice. </p><p>Start with an <a href="https://www.tomsguide.com/how-to/12-3-30-treadmill-workout">incline walk </a>at a fast tempo to increase your heart rate and warm up your legs. Think about getting to a 7/10 pace for walking.</p><p>Next, complete these moves as a circuit. Aim for 30 seconds of work (per move, per side for some moves), with 10 seconds of rest between moves and 5 rounds.</p><ul><li><strong>Single-leg stand:</strong> 30 seconds per side without rest</li><li><strong>Banded monster walks</strong>: 30 seconds (as many reps as you can)</li><li><strong>Seated banded leg curls</strong>: 30 seconds per side without rest</li><li><strong>Resistance band rows</strong>: 30 seconds per side without rest</li><li><strong>Push-ups:</strong> (knees or no knees) 30 seconds (as many reps as you can)</li></ul><h2 id="the-benefits">The benefits</h2><p>“These movements may not look dramatic, but they build the kind of stability and control that benefits everyone," Fisher explains. "They’re especially useful for improving balance and reducing the risk of everyday slips or stumbles.” While Saka is quick and reactive, you need to build the range, strength and mobility in the hips and lower body first.</p><p>“Rice is a good reminder that fitness is not always about pushing harder" Fisher adds. "Sometimes it’s about moving consistently, recovering properly and keeping the body mobile.”</p><p>It's not about training exactly like the pros, but about using them as inspiration to find a version for your level and build from there.</p><p>The basics, like balance, strength, coordination, mobility and recovery, act as building blocks for players, but they can also help gym-goers, runners and those starting exercise routines to feel stronger and fitter.</p><p>Fisher adds: “You don’t need to copy a professional footballer’s entire training plan. The real takeaway is that many of the habits behind elite performance are simple, accessible and easy to adapt. </p><p>“That’s why these exercises can work for almost anyone, whether your goal is to improve your game, get fitter, or just stay active at home.” </p><h2 id="my-verdict-2">My verdict</h2><p>On a rainy Tuesday in June (not in Stoke, though), I rolled out my mat and got to work testing Fisher's recommendations. I took the liberty of programming the workout myself based on my experience as a personal trainer, but still, I wasn't expecting the <em>burn.</em></p><p>Adapt the working sets, rest and rounds to your ability, and feel free to add progressions where you can, like holding a set of<a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells"> adjustable dumbbells</a> or kettlebells, bands, or weighted vests. These will all increase the resistance on your joints and muscles, increase your heart rate and help you work at a higher intensity, just like the ballers Fisher mentions.</p><p>Equally, you can knock some rounds off if you like. Just listen to your body. Remember, it's supposed to challenge your mind and body, but not cause injury.</p><p>I got to the end of five rounds and had built a light sweat and a big muscle burn, especially in my lower body. Balance work always hits my calves and shins hard, so be mindful of this for the first exercise.</p><p>While you're not out on a pitch in searing heat playing 90 minutes of soccer, you can still hit your muscles hard, increase balance and build functional strength at home in just a short time using this routine. </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><a href="https://www.tomsguide.com/tvs/watching-the-world-cup-on-a-samsung-tv-change-these-5-sound-and-picture-settings" target="_blank">Watching the World Cup on a Samsung TV? Change these 5 sound and picture settings</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance" target="_blank">I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams" target="_blank">How to watch World Cup 2026: live stream every game for free from anywhere in the world, tournament starts today!</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’m a personal trainer who works with clients aged 65+ daily. Here are the 2 exercises I always recommend when it comes to building mobility and balance ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-aged-65-daily-here-are-the-2-exercises-i-always-recommend-when-it-comes-to-building-mobility-and-balance</link>
                                                                            <description>
                            <![CDATA[ Two exercises I always recommend when it comes to building mobility and balance. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">eqQQZLfA6tvCaq6ub3B3QT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bRkofijsC9hwVPCS24dc7j-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 10 Jun 2026 09:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bRkofijsC9hwVPCS24dc7j-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a senior woman doing exercise]]></media:description>                                                            <media:text><![CDATA[a senior woman doing exercise]]></media:text>
                                <media:title type="plain"><![CDATA[a senior woman doing exercise]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bRkofijsC9hwVPCS24dc7j-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We all know that strength training is essential as we get older, but if you’re a complete beginner or returning to fitness after an extended break, you’ve come to the right place. </p><p>Below, Megan Hely, owner and personal trainer at <a href="https://hustlenmuscles.com/" target="_blank" rel="nofollow">Hustle N Muscles</a> in Jersey City, shares two exercises she gives all her clients over the age of 65 to build strength, mobility, and balance. You won’t need any additional equipment to complete them, just your own body weight. </p><p>As a reminder, if you’re currently injured or recovering from a specific injury, it’s always best to seek personalized advice from a qualified professional before trying anything new. </p><h2 id="what-are-the-exercises">What are the exercises?</h2><p>“In addition to strength training and mobility, we focus a lot on balance and skills like getting down and back up off the floor,” says Hely. Building<a href="https://www.tomsguide.com/features/what-is-functional-training"> functional fitness</a>, as in the kind of fitness you need to get up off the floor, stand up from the toilet, or climb stairs, can help you stay independent for longer. </p><p>The two exercises below will help strengthen your upper body, lower body, and core. Remember to start slowly and increase your reps as the exercise starts to feel easier. If at any point you feel a sharp pain, stop and seek professional help. </p><h3 class="article-body__section" id="section-wall-push-ups"><span>Wall push-ups</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EsTwpfEEGnBW9zVKV8L4L5" name="wall push up" alt="a man doing push ups on a wall" src="https://cdn.mos.cms.futurecdn.net/EsTwpfEEGnBW9zVKV8L4L5.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>“Place your arms at chest level against the wall and take one large step backward. Slowly lower yourself towards the wall, with the elbows bent at a 45-degree angle. Hold for a second, and then slowly push yourself back up until your arms are straight (making sure not to hyperextend your elbows). </p><p>Do 3 sets, starting with 8 reps and increasing as the exercise becomes easier,” says Hely.</p><h3 class="article-body__section" id="section-sit-to-stand"><span>Sit to stand</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Bo5CcPvgMmoDY8PLN4wDHU" name="chair squat" alt="sit to stand squat" src="https://cdn.mos.cms.futurecdn.net/Bo5CcPvgMmoDY8PLN4wDHU.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>“Sit in a sturdy chair with feet flat on the floor and arms crossed over your chest. Hinge your hips backward and press through your heels to a standing position. Carefully lower yourself down into the chair by pushing your hips backwards and bending your knees. </p><p>Do 3 sets, starting with 8 reps and increasing as the exercise becomes easier.”</p><h2 id="what-are-the-benefits-12">What are the benefits? </h2><p>These two exercises use all the muscles needed to do a push-up or squat, without the same stress on your joints. Wall push-ups will work your chest, shoulders and triceps without stress on your wrists, shoulders and upper back. Despite being low-impact, you’ll still be working the muscles in your upper body and putting healthy stress on the bones, which is vital for combating osteoporosis. </p><p>The sit-to-stand is essentially a squat, as you’re engaging your quads, glutes and hamstrings. You’ll also have to engage your core to stabilize your body as you stand. If you struggle with knee stiffness or arthritis, this variation of the squat is far less aggravating than a bodyweight squat while still helping lubricate the knee and hip joints, reducing stiffness. </p><p>Doing both of these exercises can help strengthen your core, improving your overall balance and reducing your risk of falls. Remember to think about keeping your abs engaged as you do both, sucking your belly button into your spine and zipping your abs up and in. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/fitness/i-tried-these-glute-bridge-variations-to-strengthen-my-hamstrings-heres-what-happened" target="_blank">I tried these glute bridge variations to strengthen my hamstrings — here's what happened</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/push-ups-are-the-exercise-you-can-do-anywhere-3-variations-to-try-if-you-want-to-build-chest-strength" target="_blank">Push-ups are the exercise you can do anywhere — 3 variations to try if you want to build chest strength</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/sit-all-day-try-these-7-back-exercises-from-a-physical-therapist-right-now" target="_blank">Sit all day? Try these 7 back exercises from a physical therapist right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm training like an elite soccer player using these 4 strength and recovery tips from Man City W.F.C. ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-training-like-an-elite-soccer-player-using-these-4-strength-and-recovery-tips-from-man-city-w-f-c</link>
                                                                            <description>
                            <![CDATA[ Improve strength, power and stability by training like elite female soccer players using these four strength and recovery tips, inspired by Manchester City W.F.C. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">v28g74iTtHxWCugPAY9Etc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6iAWcEEAnnvrYiTWUVqgxN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 10 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 10 Jun 2026 09:52:04 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Wellness]]></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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6iAWcEEAnnvrYiTWUVqgxN-1280-80.jpg">
                                                            <media:credit><![CDATA[Hytro/ Man City WSL/ Keep Comms]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Female Manchester City player training in the gym with a barbell over her back for a squat]]></media:description>                                                            <media:text><![CDATA[Female Manchester City player training in the gym with a barbell over her back for a squat]]></media:text>
                                <media:title type="plain"><![CDATA[Female Manchester City player training in the gym with a barbell over her back for a squat]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6iAWcEEAnnvrYiTWUVqgxN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Ahead of the <a href="https://www.tomsguide.com/entertainment/live/watch-world-cup-2026-free">World Cup 2026 </a>kicking off, I recently sat down with <a href="https://uk.linkedin.com/in/emma-deakin-43908437" target="_blank" rel="nofollow">Emma Deakin</a>, Performance Director at Manchester City Women's Football Club, to discuss how the women's team trains and recovers after just winning the Women's Super League (WSL) this season.</p><p>As a personal trainer, I'm not only fascinated by how elite soccer players recover, but also how they train to stay fit, powerful, strong and injury-resistant despite demanding schedules across all competitions. And yes, despite the amount of running players do, that does involve strength training, a decent amount of time spent in the gym and a focus on recovery.</p><p>Below, I've shared some fascinating insights into my time with Deakin, plus four strength and recovery methods inspired by the women's team and how I'm trying them for myself.</p><section class="article__schema-question"><h3>"How do you incorporate the gym into training, and what type of equipment is crucial?"</h3><article class="article__schema-answer"><p>"Everything's tailored to the individual," Deakin shares. "We can be really specific in terms of understanding what individual needs are, related to what their requirements are on the pitch and whatever the game requires of them."</p><p>"We have our diagnostic assessments to say where someone might need a little bit more work. Is it increasing force production around their knee extensors? Is it the metabolic side? Everything is bespoke," she adds.</p><p>"It's not that one exercise or one bit of equipment is utilized more....There are general trends, and we recognize the nature of the female athlete and the injury risk; there are certain things we look to gravitate toward."</p><p>Deakin tells me: "We are a running-based sport, where people need to have the capacity to run for 90 minutes, but they also need to be able to create the <a href="https://www.tomsguide.com/wellness/fitness/concentric-vs-eccentric-movement-which-is-better-for-muscle-growth">concentric and the eccentric</a> forces to sprint and to repetitively sprint, and change direction, and change direction quickly.</p><p>"You need good hamstrings and good calves. Unless you've got those, your ability to produce force in the right manner, repetitively, is really difficult."</p></article></section><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2500px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="KVfhY2godc6iLLbTqji7Cj" name="HYTRO_MCW_FEB26_761" alt="Image of Man City's gym" src="https://cdn.mos.cms.futurecdn.net/KVfhY2godc6iLLbTqji7Cj.jpg" mos="" align="middle" fullscreen="" width="2500" height="1406" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Hytro/ Keep Comms/ Manchester City)</span></figcaption></figure><p>The protocols below are inspired by Deakin's prioritization of certain exercises, equipment, or muscle groups in the gym. </p><p>In terms of training overall, Man City women's performance team says each day of the week (Sunday to Sunday) leading up to a game will look different, with a rest day the day after a match, followed by two training days, a day off, then a two-day lead-in to the next game.</p><p>There's a focus on adaptation for the first two days, looking at smaller areas, smaller numbers and intensive shorter working durations at a higher intensity. Next, there are longer working durations, bigger numbers, an extensive focus and bigger pitch areas. </p><p>The two days leading into a game are tactical and shorter, with smaller pitch areas and a focus on tapering down to the game.</p><p>"We keep the training load high," counters Deakin. "Say we were playing Chelsea or Arsenal three times a week, what would our output need to be, and how do we make sure the girls are ready and prepped for that?" </p><p>Given City's schedule next season, you have to be prepared for big games consistently, regardless.</p><div><blockquote><p>"You need good hamstrings and good calves. Unless you've got those, your ability to produce force in the right manner, repetitively, is really difficult."</p></blockquote></div><p>And a one-size-fits-all approach? Not at this level. </p><p>"We profile all our players in terms of strength metrics and aerobic capabilities, and that informs their individual, tailored gym and programming for the season," Deakin tells me.</p><p>During our conversation, there's a strong focus on the importance of the lower body and the muscle groups responsible for driving force, power, speed and direction change. </p><p>The exercises, kit and protocols below are inspired by our catch-up.</p><h2 id="4-strength-and-recovery-tips-for-your-workout-routine">4 strength and recovery tips for your workout routine</h2><h3 class="article-body__section" id="section-1-calf-exercises"><span>1. Calf exercises</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9vKJMeKWnSJotNiW7EShUo" name="shutterstock_2489278279 calf raises" alt="Bottom half of person in socks standing on yoga mat outdoors performing calf raises" src="https://cdn.mos.cms.futurecdn.net/9vKJMeKWnSJotNiW7EShUo.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>"Calf machines for soleus and gastrocnemius," says Deakin. The soleus is the deeper of the two, sitting beneath the gastrocnemius and playing a critical role in running, especially during the push-off phase. The gastrocnemius is the larger muscle responsible for power.</p><p>As Deakin mentions earlier, calves are incredibly important in football if you want to generate force on the pitch, especially since you'll be running and changing direction repeatedly for at least 90 minutes of the game. </p><p>Interestingly, your <a href="https://www.tomsguide.com/wellness/fitness/your-calf-muscles-are-your-second-heart-heres-what-you-should-know">calves are called the second heart</a>, working as a pump to help push deoxygenated blood upward against gravity. Aided by one-way valves (which prevent backflow), they help reduce the strain on your heart while keeping your blood moving.</p><p>The next time you hit the gym, consider adding calf machine exercises into your regimen. You could also start with <a href="https://www.tomsguide.com/features/i-did-100-seated-calf-raises-every-day-for-a-week-heres-what-happened">seated calf raises</a>, <a href="https://www.tomsguide.com/news/i-did-100-calf-raises-a-day-for-a-week-heres-what-happened">calf raises</a>, or weighted raises instead and build up.</p><p><em><strong>Aim for 8-12 reps and 3-4 sets.</strong></em></p><h3 class="article-body__section" id="section-2-squats"><span>2. Squats</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:6496px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nrFzDQKRLLcWxkhCPZjn2X" name="shutterstock_2346668091 woman squatting with barbell" alt="Woman squatting with barbell using a squat rack in gym" src="https://cdn.mos.cms.futurecdn.net/nrFzDQKRLLcWxkhCPZjn2X.jpg" mos="" align="middle" fullscreen="" width="6496" height="3654" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><a href="https://www.tomsguide.com/wellness/fitness/how-to-use-a-squat-rack-safely-and-effectively">Squat racks</a> are a favorite for Deakin. "I would struggle to go to a gym and not have those in it," she says. "We are big on strength...We set quite high benchmarks for our strength metrics...That is based on the research around the output they need to put out."</p><p>Squats are one of the <a href="https://www.tomsguide.com/wellness/fitness/what-are-the-big-5-compound-lifts-in-weight-training" target="_blank">big 5 compound lifts</a> in the resistance training world, responsible for building strength, power and muscle in the lower body, including your hips, glutes, quads, hamstrings and calves. Your core recruits heavily to stabilize your torso, and depending on how you load the squat (front or back), you can emphasize the front or back of the body more.</p><p><em><strong>Try 6-12 reps depending on load (6 reps at a heavier weight, 12 at a lighter weight) and 3-4 sets.</strong></em></p><div><blockquote><p>"We are big on strength...we set quite high benchmarks for our strength metrics."</p></blockquote></div><h3 class="article-body__section" id="section-3-eccentric-loading"><span>3. Eccentric loading</span></h3><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W0mbrO"></div>                            </div>                            <script src="https://kwizly.com/embed/W0mbrO.js" async></script><p>Eccentric training can help your body cope better with deceleration and absorbing force; it occurs as the muscles lengthen (like the lowering phase of a squat) and can help you load heavier, build muscle and reduce injury risk.</p><p>Eccentric loading can be done using <a href="https://www.tomsguide.com/wellness/fitness/personal-trainer-shares-3-tempo-training-tips-to-get-more-from-your-strength-workouts">tempo training</a>. For example, slowing down the lowering phase of the squat, then pressing upward with power. <em><strong>You might adopt a tempo known as 4-1-2-1</strong></em>, which would mean lowering for four, pausing for one, lifting for two and moving into the next rep. Of course, this is just one way of approaching it in the gym.</p><p>"Any time that you're doing small area work and you're getting a high volume of breaking (and) changing direction tasks, that's a stimulus within itself, so what we try to do in the gym is make sure we're complementing that," says Deakin. "That changes through the season, but certainly...The hamstrings need some supermaximal and eccentric work." </p><p>By that, Deakin means training and game time itself provide a lot of eccentric stimulus, so it's important not to overdo the same types of movements in the gym setting; instead, it's about complementing them. </p><p>Eccentric and, more generally, <a href="https://www.tomsguide.com/features/progressive-overload-what-is-it-and-how-does-it-help-build-muscle-and-strength">progressive loading</a> doesn’t just refer to lifting heavier weights over time, either — you can add intensity in different ways, including the reps or sets you use, tempo, depth, or the amount of time you work for. It's about considering volume within a training plan.</p><h3 class="article-body__section" id="section-4-blood-flow-restriction-bfr"><span>4. Blood Flow Restriction (BFR)</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:887px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="kMZ9UGqaMBPEr5xqzzMKtf" name="BFR 1.jpg" alt="Sam Hopes wearing Hytro BFR performance shorts" src="https://cdn.mos.cms.futurecdn.net/kMZ9UGqaMBPEr5xqzzMKtf.jpg" mos="" align="middle" fullscreen="" width="887" height="499" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><a href="https://www.tomsguide.com/wellness/fitness/i-spent-one-month-using-blood-flow-restriction-shorts-for-workout-recovery-here-are-my-results">I trained with Hytro Blood Flow Restriction garments, </a>and<a href="https://www.tomsguide.com/wellness/fitness/i-spent-one-month-using-blood-flow-restriction-shorts-for-workout-recovery-here-are-my-results"> </a>the Man City Women's team also incorporates Hytro training garments into their recovery regimen. </p><p>There’s plenty of research backing BFR, including a study by the <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7727422/#:~:text=BFR%20training%20improves%20muscle%20hypertrophy,to%20high%20load%20resistance%20training" target="_blank" rel="nofollow">International Journal of Sports Physical Therapy</a>, which found it can “improve muscle hypertrophy and strength to a greater extent than low-resistance training alone” and may produce “similar gains in hypertrophy” and strength as higher-load resistance training. </p><p>The Blood Flow Restriction wearable is pressure-validated and tailored for sports performance but can be used by anyone, anywhere, during training or recovery. The Hytro technology (shorts or tee) is positioned at the most proximal point on the limbs and uses a strapping mechanism that tightens around the upper arms or thighs. </p><p>Blood flows into the limb while the straps restrict return flow to the body, meaning the veins are constricted, and the arteries are left alone.</p><p>You can use the Hytro BFR garments for passive and active recovery, workout prep, or as a finisher, but if you do choose BFR, it's best to check <a href="https://hytro.com/hytro-user-guide" target="_blank" rel="nofollow">Hytro protocols</a>, as these give recommended settings to follow.</p><p>I’ve been focusing on the exercise recovery modality and started on the second setting, building up to the top setting as I adapt to the pressure. <em><strong>I used protocols of 5 minutes strapped in, then 2 minutes off, for 3 sets. </strong></em></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2500px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="raTHSJcQHWndNTSCt7CB4a" name="HYTRO_MCW_FEB26_670" alt="Man City women's team active recovery on bike in Hytro BFR shorts" src="https://cdn.mos.cms.futurecdn.net/raTHSJcQHWndNTSCt7CB4a.jpg" mos="" align="middle" fullscreen="" width="2500" height="1406" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Manchester City/ Hytro / Keep Comms)</span></figcaption></figure><p>"It's ease of use," says Deakin, when I ask what draws City to Hytro garments. "It's easy to use, compact to travel with...It's useful from a recovery perspective."</p><p>She adds, "There are so many different ways the players can use it... Some really like active recovery, so they'll use it on a bike; some like static recovery, where they can just sit on a bus...Some like to go in an ice bath, so we can team it up with that to supercharge recovery."</p><p>The team also uses the garments in rehab settings, such as returning to therapy or training after an injury.</p><h2 id="my-verdict-3">My verdict</h2><p>Squats already feature heavily in my training regimen. Still, I've whipped out my Hytro shorts and started using them again during recovery sessions on the bike and walking; I forgot just how much I love using them, how intense it feels when you're strapped in, and how awesome that feeling of release and flushing feels after. It's a no-brainer for my DOMS moving forward.</p><p>I've also begun adding weighted <a href="https://www.tomsguide.com/wellness/fitness/physio-says-runners-need-these-3-calf-strength-variations-in-their-training-heres-why-im-finally-listening">calf exercises</a> back into my lower-body workouts as I've started increasing my running output this summer, and I can't wait to see if this helps support my joints and, more widely, my lower-body routines during the next few months of training. </p><p>While it's early days, I often neglect my calves, and they're important muscles to keep strong, especially if you value mobility, play a lot of sports, or enjoy walking, running, or hiking, given that they support forward propulsion. </p><p>I'll be reporting back a few months down the line. In the meantime, do you use any of these tools for recovery and workouts, and if so, which ones and why? </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><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/DZRprdLkZsr/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/we-know-weight-training-prevents-muscle-loss-after-40-but-what-3-moves-should-you-start-with" target="_blank">We know weight training prevents muscle loss after 40, but what 3 moves should you start with?</a></li><li><a href="https://www.tomsguide.com/entertainment/sports/watch-world-cup-2026-free-live-streams">How to watch World Cup 2026 in Canada for FREE</a></li><li><a href="https://www.tomsguide.com/news/these-6-stretches-for-beginners-boost-flexibility-in-your-hamstrings-calves-and-ankles" target="_blank">Best ankle stretches</a> for tight ankles</li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The at-home Barbie Pilates routine: I replicated Margot Robbie’s core workout without a gym ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-tried-this-margot-robbie-barbie-pilates-ab-workout-and-my-core-still-hasnt-forgiven-me</link>
                                                                            <description>
                            <![CDATA[ Try these Pilates exercises inspired by Margot Robbie's routine to get in shape for 'Barbie.' ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">E5tH6qPFgtwgCvfTbqi7W5</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xwAUeDPW4pGpGBvHtU7Uog-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Jun 2026 08:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 11 Jun 2026 13:24:38 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/xwAUeDPW4pGpGBvHtU7Uog-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty/Samir Hussein / Contributor/Instagram/chrissiglow]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of Margot Robbie and Chrissi Glow]]></media:description>                                                            <media:text><![CDATA[a photo of Margot Robbie and Chrissi Glow]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of Margot Robbie and Chrissi Glow]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xwAUeDPW4pGpGBvHtU7Uog-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Pilates is hailed as one of the best forms of exercise for sculpting a strong, stable core. Developed by Joseph Pilates in the early 20th century, what was once a niche dancer’s workout is now used by celebrities to get in shape — and one of these celebs is Margot Robbie. </p><p>Robbie famously used strength training and reformer Pilates to get in shape for her role as Barbie. She trained with Pilates instructor and personal trainer, <a href="https://davidhigginslondon.com/" target="_blank" rel="nofollow"><u>David Higgins</u></a>, who has worked with stars including Scarlett Johansen and Ariana Grande. </p><p>Yet if you don’t have an expensive reformer Pilates membership, fear not. Pilates instructor <a href="https://www.instagram.com/chrissiglow/?hl=en&g=5" target="_blank" rel="nofollow"><u>Chissi Glow</u></a> has come up with a ‘Barbie’ series of workouts you can do from home, using just a foam roller and a set of dumbbells. Check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells </a>for working out at home here.</p><p>I’ve been practicing Pilates for 15 years. It’s helped me get to the start line of six marathons injury-free, as well as rebuild my core and pelvic floor muscles following the birth of my son two years ago. To find out more, I unrolled my exercise mat, grabbed a foam roller, and gave this workout a try. My abs still haven’t forgiven me. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eJld9O"></div>                            </div>                            <script src="https://kwizly.com/embed/eJld9O.js" async></script><h3 class="article-body__section" id="section-what-is-the-workout"><span>What is the workout? </span></h3><p>All you’ll need for this workout is a foam roller and a set of dumbbells. If you don’t have a foam roller, you can use a rolled up towel, or a Pilates ball if you own one. The goal is to create some instability — this makes the deep transverse abdominis muscles in your midsection work harder to stabilize your body as you move. </p><p>As with all Pilates workouts, the key here is to move slowly and with complete control. The slower you move, the harder your core is working. </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/DYLm9maNR-9/" target="_blank">A post shared by Chrissi Glow | Pilates & Wellness (@chrissiglow)</a></p><p>A photo posted by  on </p></blockquote></div><p>Here’s the exercises: </p><ul><li><strong>Bicycles, 4 x 20 seconds</strong>: For this exercise, place the foma roller underneath your sit bones. Raise one leg, then the other into tabletop position, keeping a 90-degree bend in your knees. Hold a dumbbell in each hand and raise both towards the ceiling, with your arms straight. Engage your core, thinking about sucking your belly button into your spine, then circle your legs around, as if you were riding a bike, while keeping your upper body still.</li><li><strong>Wide leg toe taps, 4 x 8 reps: </strong>Keeping the dumbbells raised and your arms straight, take your knees hip-width apart, and keeping the bend in your legs, tap both toes down to the floor together, before slowly lifting them back to your starting position. If this is too hard, drop the weights or remove the foam roller.</li><li><strong>Alternating toe taps, 4 x 10 reps</strong>: Place your dumbbells down to the floor for this move. Keeping your lower back pressed into your foam roller, tap one toe, then the other to the floor.</li><li><strong>Flutter kicks, 3 x 20 seconds: </strong>Extend you legs to the ceiling, keeping your toes pointed. Flutter one leg, then the other, trying to keep your legs straight. To make this harder, lower your legs to a 45 degree angle.</li><li><strong>Saddle scissors, 3 x 10 reps: </strong>Keeping your core engaged, raise your legs to the ceiling, pointing your toes. Take both legs out to the side, then using your core, bring them back to your starting position.</li></ul><h3 class="article-body__section" id="section-what-are-the-benefits"><span>What are the benefits? </span></h3><p>Doing these exercises on a foam roller is one of the most effective and affordable ways to mimic the feel of a Pilates reformer at home. By lying on the foam roller, you’re adding a huge amount of instability to the exercises, meaning your deep transverse abdominis and pelvic floor muscles will be working harder to stabilize your body. </p><p>The foam roller also helps you move with better alignment. If you let your hips tilt during exercises like toe taps, the roller will instantly rock or wobble. This forces you to correct your aligment and stay centered, which in turn means you’ll be working both sides of the body equally.</p><p>Finally, with the added resistance of holding two dumbbells in this exercise, you’ll likely have to slow down and really think about moving with precision and control. If you rush the exercises, you’ll wobble, so this is a great workout for really helping you concentrate and move with good form. </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><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/DZRprdLkZsr/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Everything you need to know about the 2026 World Cup football ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/everything-you-need-to-know-about-the-2026-world-cup-football</link>
                                                                            <description>
                            <![CDATA[ Here's everything you need to know about Adidas' new Trionda football ahead of the 2026 World Cup. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HiGomoZiLTi5RzAq483Th6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7m5nXYdZRQh64w43rw9FtV-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 08 Jun 2026 20:31:50 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Michael Sawh ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XzKZfEJckug4bqAFzqy949.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7m5nXYdZRQh64w43rw9FtV-1280-80.jpg">
                                                            <media:credit><![CDATA[Adidas]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of the world cup football ]]></media:description>                                                            <media:text><![CDATA[a photo of the world cup football ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of the world cup football ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7m5nXYdZRQh64w43rw9FtV-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The Telstar, Brazuca, and the Jabulani. Adidas footballs are inextricably tied to the biggest football tournament in world football.</p><p>For the 2026 edition of the World Cup, 48 teams will have a brand new ball to play with. One that’s been designed not only to pay homage to the hosts, but also to be one that players will enjoy rifling into the back of the net.</p><p>The 2026 World Cup ball is the Adidas Trionda and here’s why this World Cup football might be Adidas’ most special one yet.</p><h3 class="article-body__section" id="section-the-name"><span>The name </span></h3><p>Like previous Adidas World Cup footballs, the name carries a meaning. Trionda is a Spanish-influenced name, which translates to three waves. The three waves represent the co-hosts for this year’s tournament, with matches set to be played in Canada, Mexico, and the US.</p><p>Those waves meet together in a triangle on the ball to symbolise the three countries uniting as hosts. The Trionda features the colours as well as emblems from each nation's flag. So you’ll spot a white star to represent the US, the eagle from Mexico’s flag, and the Maple Leaf from Canada’s flag. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5262px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="ZHji4Lzn7ZwYL9WK2pTyFZ" name="704231" alt="a photo of the world cup football" src="https://cdn.mos.cms.futurecdn.net/ZHji4Lzn7ZwYL9WK2pTyFZ.jpg" mos="" align="middle" fullscreen="" width="5262" height="2959" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Adidas)</span></figcaption></figure><h3 class="article-body__section" id="section-there-s-a-whole-family-of-trionda-balls"><span>There’s a whole family of Trionda balls</span></h3><p>The actual ball that players will be using during matches at the World Cup is the Adidas Trionda Pro. That’s not the only ball available in the Trionda range. There’s the Trionda Competition, which is also suitable to be used in competitive matches. The Trionda Club is the ball you take for a kickabout down the park, and you can even pick up a Trionda mini for a more child-friendly option. Or something that’s easier to chuck into your suitcase.</p><h3 class="article-body__section" id="section-pitch-perfect"><span>Pitch perfect</span></h3><p>As seen at the Club World Cup last summer, the weather could be a big talking point at the World Cup. Whether that’s players tackling heavy rain or having to handle humid conditions. Adidas kept the weather in mind when designing the Trionda Pro ball. It included embossed icons, with the aim of improving grip when players are dribbling the ball or striking it in hot or rainy weather.</p><h3 class="article-body__section" id="section-more-controlled-flight"><span>More controlled flight</span></h3><p>The Trionda Pro features a four-panel design and is a seamless ball, which should lead to it being more stable in flight when it’s being drilled across the pitch or shot towards goal. Adidas achieved this more controlled flight by adding deep seams as well as debossed lines to create a drag that’s spread more evenly across the ball. That’ll be good news for goalkeepers concerned that a misbehaving ball could end up embarrassing them on the biggest stage.</p><h3 class="article-body__section" id="section-better-ball-smarts"><span>Better ball smarts</span></h3><p>After Adidas first introduced Connected Ball Technology in its Al Rihla ball used at the 2022 World Cup in Qatar, the Trionda Pro now features an enhanced version of that same technology.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7386px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="qvYT7fb3BofNwdXfoCXoji" name="704240" alt="world cup football" src="https://cdn.mos.cms.futurecdn.net/qvYT7fb3BofNwdXfoCXoji.jpg" mos="" align="middle" fullscreen="" width="7386" height="4154" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Adidas)</span></figcaption></figure><p>A 500Hz motion sensor chip is now placed inside one of the ball’s panels as opposed to sitting in the centre of the ball as it did on the Al Rihla. That sensor can capture sophisticated ball data, and when combined with player position data and AI, can be used by VAR officials to help speed up offside decisions. </p><p>The use of those improved smarts does not end there. It will also be able to help officials correctly identify when an individual touches the ball. That could have a huge impact on match officials, making the correct calls over contentious handball incidents.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OK70RO"></div>                            </div>                            <script src="https://kwizly.com/embed/OK70RO.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/wellness/running/i-test-running-shoes-for-a-living-and-you-dont-need-to-buy-the-latest-models-these-5-last-gen-shoes-are-just-as-good-and-often-on-sale">Forget pricey new running shoes — I would get these last-gen Hoka, Saucony and New Balance at a steep discount instead</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/coros-pace-4-vs-coros-pace-3-vs-coros-pace-pro-which-is-the-best-coros-watch-for-you">Coros Pace 4 vs Coros Pace 3 vs Coros Pace Pro: Which is the best Coros watch for you?</a></li><li><a href="https://www.tomsguide.com/wellness/smartwatches/garmin-fenix-8-vs-garmin-fenix-8-pro-should-you-upgrade">Garmin Fenix 8 vs. Garmin Fenix 8 Pro: should you upgrade?</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget crunches: This one exercise is 100x more effective at building a strong and stable core ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-crunches-this-one-exercise-is-100x-more-effective-at-building-a-strong-and-stable-core</link>
                                                                            <description>
                            <![CDATA[ Everything you need to know about bear plank pull-throughs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">f3HX784aTeQCDTi6PWSYJe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tdtfbuJcz98CafkYtB35gb-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 08 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lucy Miller ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/s9KatBYrBQVZzj5oPAagPM.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Miller&amp;nbsp;is a Journalist, Level 3 Personal Trainer, Nutritional Advisor and Children’s Fitness Specialist. She holds fitness qualifications from NASM Training and Premier Training International and has been a fitness journalist and model for over 20 years. Since going freelance in 2014, Lucy left Men’s Fitness Magazine to write for an abundance of top consumer titles such as Women’s Health, Women’s Fitness, Glamour, Top Sante, The Guardian and Runners World.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;She’s also extremely passionate when it comes to educating others about health and physical activity and loves inspiring and working with children and adults to help make fitness fun, sustainable and accessible.&amp;nbsp;In her spare time, Lucy is ever the sportswoman. Once a national gymnast, having won three national titles, she has also run a handful of marathons around the world and loves to test her physical and metal side with regular running and gym sessions, not to mention ballet, bootcamp, boxing and TRX.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tdtfbuJcz98CafkYtB35gb-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman with strong abs]]></media:description>                                                            <media:text><![CDATA[a photo of a woman with strong abs]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman with strong abs]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tdtfbuJcz98CafkYtB35gb-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Crunches and sit-ups remain some of the most popular core exercises out there. But despite what social media might tell you, they won't burn belly fat or magically reveal a six-pack, and they're not always the most functional way to train your abs. In fact, if you struggle with back pain or tight hip flexors, they can sometimes do more harm than good.</p><p>As someone who runs the equivalent of a marathon a week (that's 26.2 miles spread across seven days before you gasp) and has rebuilt my core after two pregnancies (think diastasis recti, also known as abdominal separation), I've learned that the <a href="https://www.tomsguide.com/news/best-core-exercises-for-complete-beginners">most effective core exercises</a> aren't always the ones that isolate your abs and leave your mid-section and hip flexors burning. </p><p>Instead, they're the exercises that train your core the way we actually use it and teach your body to stabilize, balance and resist movement. That's why I'm a huge fan of the bear plank pull-through. If you're looking to get the best results from your core workouts, I'd choose this exercise over crunches every single time. </p><p>Read on to find out how to do the bear plank pull-through and why it's one of the most functional core exercises you can add to your workout routine.</p><h2 id="what-are-bear-plank-pull-throughs-and-how-do-you-do-them">What are bear plank pull-throughs, and how do you do them?</h2><p>Think of this exercise as a cross between a <a href="https://www.tomsguide.com/news/i-did-bear-planks-every-day-for-a-week-heres-my-results">bear plank </a>hold and a plank <a href="https://www.tomsguide.com/features/i-did-90-plank-pull-throughs-every-day-for-a-week-heres-what-happened-to-my-abs">dumbbell pull-through</a>. You'll start in a tabletop position with your knees hovering an inch or two above the floor and a dumbbell or kettlebell placed beside one hand.</p><p>From here, the goal is to reach underneath your body and pull the weight across to the opposite side without letting your hips sway from side to side or your knees creep up. It sounds simple, but keeping your body stable while balancing on three points of contact will challenge your entire core.</p><p>As you perform the move, focus on keeping your knees low to the floor, your hips level and your belly button pulled towards your spine. Your glutes, shoulders and deep core muscles should also all be working to keep you balanced and prevent your body from toppling over.</p><h2 id="here-s-how-to-do-bear-plank-pull-throughs-with-good-form">Here's how to do bear plank pull-throughs with good form:</h2><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/DZITj3_sxtl/" target="_blank">A post shared by Lucy Miller (@lucycmiller_)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li>Place a dumbbell or kettlebell on the floor just outside your right hand. Get into a bear hold position with your hands directly beneath your shoulders and your knees beneath your hips.</li><li>Lift your knees an inch or two off the floor and push the ground away with your palms.</li><li>Once stable, brace your core and reach underneath your body with your left hand. Drag the weight across to the left side and place it on the floor with control.</li><li>Reset your position, making sure your hips remain level, and your core stays engaged.</li><li>Reach under your body with your right hand and drag the weight back to the opposite side.</li><li>Continue alternating sides for the desired time or number of repetitions.</li><li>The goal is to keep your spine neutral and your body as still as possible throughout the exercise. If your hips are rocking and your knees lifting, try slowing the movement down or using a lighter weight until you've mastered the technique.</li></ul><h2 id="how-many-shall-i-do">How many shall I do? </h2><p>Start with three sets of 30 seconds, focusing on keeping your hips stable and your core engaged throughout the movement. As you get stronger, gradually increase your working time to 45 seconds and then 60 seconds.</p><p>I do mine with a 7.5kg dumbbell, but choose a weight that feels good for you while allowing you to maintain good form. Remember, this exercise is more about control and coordination rather than lifting heavy.</p><p>Once you've mastered the movement, try performing it with a kettlebell, which can be a little trickier to pull across the floor due to its shape. For an extra challenge, place a Pilates ball between your knees and gently squeeze it throughout the exercise. </p><p>Not only will this switch on your adductors (the muscles of your inner thighs), but it'll also make your core work even harder to keep you stable.</p><h2 id="what-are-the-benefits-13">What are the benefits?</h2><p>Unlike crunches, which mainly train your abs to flex your spine, bear plank pull-throughs teach your core to resist movement. Think shoulders over wrists, knees under hips and hovering just off the ground, while maintaining a neutral spine.</p><p>As you reach beneath your body to drag the weight across, your deep core muscles have to work hard to stop your hips from twisting or rocking from side to side. At the same time, your obliques and shoulders are working overtime to keep you stable.</p><p>This is known as anti-rotation training, and it's much harder than it looks. In fact, it's one of the most <a href="https://www.tomsguide.com/features/what-is-functional-training">functional ways to strengthen your core</a>. In everyday life, your core's job isn't to crunch; it's to stabilize your pelvis, protect your spine, and transfer force between your upper and lower body as you move.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2120px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="bSQGDiwoLcXZP86D9LmkaD" name="bear plank getty.jpg" alt="a photo of a woman doing a bear plank" src="https://cdn.mos.cms.futurecdn.net/bSQGDiwoLcXZP86D9LmkaD.jpg" mos="" align="middle" fullscreen="" width="2120" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty/Luca Sage)</span></figcaption></figure><p>You'll also get a lot more than a core workout. Because you're supporting your body weight throughout the exercise, your shoulders, glutes, hips and quads all have to work hard to keep you balanced. The result is a full-body exercise that challenges your coordination and stability.</p><p>As a runner, this is one of the reasons I love the bear plank pull-through. A strong core helps you maintain good running form when fatigue starts to set in, allowing you to stay stable and efficient as you tick off the miles. The exercise also teaches your body to stabilize while your arms and legs are moving: exactly what happens when you run.</p><p>For women in particular, exercises like this can be a great alternative to endless crunches. By training the deep core muscles and encouraging better pelvic stability, you can build strength that carries over into everyday activities as well as lifting weights in the gym. It's also a great option for anyone rebuilding core strength after pregnancy, surgery, or an injury.</p><p>So, if you're bored with crunches or simply want a more functional way to train your core, give the bear plank pull-through a try. Don't be surprised if it leaves your abs and quads shaking after just a few reps. </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><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/DVyECxEiCU5/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-or-lunges-i-use-this-simple-pilates-exercise-to-sculpt-strong-obliques-inner-thighs-and-hip-stabilizers">Not sit-ups or lunges — I use this simple Pilates exercise to sculpt strong obliques, inner thighs and hip stabilizers</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">'I’m a Pilates instructor, and I recommend these 5 core exercises to help older clients build strength and improve posture'</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ No burpees, sit-ups, or planks! This 20-minute standing Pilates workout builds full-body strength ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/no-burpees-sit-ups-or-planks-this-20-minute-standing-pilates-workout-builds-full-body-strength</link>
                                                                            <description>
                            <![CDATA[ You don’t necessarily have to do floor moves like push-ups and crunches to get stronger, and this standing Pilates workout also improves your balance and stability. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">svQj2yQgAbvTmpwhqYMrLb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/NgEJrEa7teH4EQG5FtWd8Z-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 07 Jun 2026 10:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Nick Harris-Fry ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/J5Jjp49GUVjLZEbjEkTex.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nick has been a journalist since 2012 and has spent most of that time writing about health and fitness for a variety of publications. Nick spent nine years working on the Coach magazine and website before moving to the fitness team at Tom’s Guide in 2024. Nick is a keen runner and also the founder of YouTube channel &lt;a href=&quot;https://www.youtube.com/channel/UCOBM9FasII4dKbyE_HKkbjw&quot;&gt;The Run Testers&lt;/a&gt;, which specialises in reviewing running shoes, watches, headphones and other gear.&lt;/p&gt;&lt;p&gt;Nick has covered all aspects of health and fitness throughout his career, interviewing experts and celebrities, trying fitness classes and running marathons, all in the name of providing readers with the information they need to get the most out of an active lifestyle.&lt;/p&gt;&lt;p&gt;Nick ran his first marathon in 2016 after six weeks of training for a magazine feature and subsequently became obsessed with the sport. He now has PBs of 2hr 25min for the marathon and 15min 30sec for 5K, and has run 16 marathons in total, as well as a 50-mile ultramarathon.&lt;/p&gt;&lt;p&gt;Nick runs 60-90 miles a week and races regularly with his club, which gives him a lot of opportunity to test out running gear: he has tested and reviewed hundreds of pairs of running shoes, as well as fitness trackers, running watches, sports headphones, treadmills, and all manner of other kit. Nick is also a qualified Run Leader in the UK.&lt;/p&gt;&lt;p&gt;Nick is an established expert in the health and fitness area and along with writing for several publications, including &lt;a href=&quot;https://www.livescience.com/author/nick-harris-fry&quot;&gt;Live Science&lt;/a&gt;, &lt;a href=&quot;https://www.expertreviews.co.uk/authors/nick-harris-fry&quot;&gt;Expert Reviews&lt;/a&gt;, &lt;a href=&quot;https://www.wareable.com/author/n.harris-fry&quot;&gt;Wareable&lt;/a&gt;, &lt;a href=&quot;https://www.coachweb.com/author/nick-harris-fry&quot;&gt;Coach&lt;/a&gt; and &lt;a href=&quot;https://www.getsweatgo.com/author/n.harrisfry&quot;&gt;Get Sweat Go&lt;/a&gt;, he has been quoted on &lt;a href=&quot;https://www.theguardian.com/thefilter/2024/oct/20/if-you-pay-more-than-4-youre-being-ripped-off-the-fair-price-for-14-everyday-items-from-cleaning-spray-to-olive-oil&quot;&gt;The Guardian&lt;/a&gt; and &lt;a href=&quot;https://www.independent.co.uk/life-style/health-and-families/london-marathon-2021-date-training-tips-summer-running-a9482486.html&quot;&gt;The Independent&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Nick graduated from the University of York in 2010 with a degree in Politics, Philosophy and Economics and worked in the NHS for three years, during which time he completed his NCTJ Diploma in Journalism at News Associates in London. Before starting on Coach and moving into health and fitness, Nick worked as a football journalist and lived in Kathmandu, Nepal for two years.&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/NgEJrEa7teH4EQG5FtWd8Z-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a senior woman doing a workout]]></media:description>                                                            <media:text><![CDATA[a senior woman doing a workout]]></media:text>
                                <media:title type="plain"><![CDATA[a senior woman doing a workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/NgEJrEa7teH4EQG5FtWd8Z-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Pilates is commonly associated with floor exercises on a mat or Reformer workouts using a dedicated machine, but you can gain the strength-building benefits of Pilates while standing.</p><p>This 20-minute standing workout has been created by certified Pilates instructor and YouTuber <a href="https://www.youtube.com/@FitLara_BarrePilates" target="_blank" rel="nofollow">FitLara,</a> and it’s designed to be a low-impact way to strengthen muscles all over the body while improving your balance and stability.</p><p>It’s an accessible session that people of all fitness levels can try, and you don’t need any equipment to do the workout, though rolling out one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> will give you better grip.</p><h3 class="article-body__section" id="section-watch-fitlara-s-20-minute-standing-pilates-workout"><span>Watch FitLara’s 20-minute standing Pilates workout</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/p2ZDFyqptV8" allowfullscreen></iframe></div></div><p>Lara does the workout with you and leads you through the whole thing, giving tips for each move as well as guiding your breathing.</p><p>Make sure you can see and hear Lara for advice on posture in particular, as she guides you into the right position at every step and helps make you more aware of your body in a way that will translate well to other workouts.</p><p>The session is a flow, moving from exercise to exercise smoothly. This helps the time fly by, especially if you focus on your breathing to control your movements.</p><p>Throughout the workout, maintaining good form is vital to engaging the right parts of the body, including the deep stabilizing muscles, so it’s important not to rush through any moves. Focus on controlling your movement, maintaining good posture and staying aware of the muscles you’re trying to work at all times.</p><p>To improve your balance, the workout involves several exercises where you stand on one leg at a time. If you’re concerned about falling, then you could do the session near a table or chair you can lean on during these exercises.</p><p>As well as strengthening your muscles, the session works as a full-body stretch, and if you fully engage with the flow there’s certainly a mindful element too. It will help you switch off from the worries of your day and focus on moving in a stable and controlled manner.</p><p>With no floor moves or jumping exercises in the session, it’s certainly a low-impact workout accessible to those looking to limit the stress on their joints.</p><p>This also means it’s a workout you can do several times a week without worrying you’re putting too much stress into the body. If you have the time, it’s a session you can do every day.</p><p>Consistency is certainly the key for maintaining strength and stability throughout the body, so the more often you can train with workouts like this, the better.</p><p>If you find you can complete the session comfortably, it will be worth progressing with more challenging workouts. You could do this by holding light weights during this workout, or moving on to tougher standing sessions like this <a href="https://www.tomsguide.com/wellness/fitness/forget-running-get-fitter-and-boost-your-metabolism-in-20-minutes-with-this-standing-hiit-workout">20-minute cardio blast</a>.</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><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/DWliw6KDFwm/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I teach people how to be more mobile: 3 low-impact back and shoulder moves that build stability and strength after 40 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-teach-people-how-to-be-more-mobile-3-low-impact-back-and-shoulder-moves-that-build-stability-and-strength-after-40</link>
                                                                            <description>
                            <![CDATA[ These three moves can help you strengthen your back and shoulders and improve your posture. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZRefuJtnZxK8Wg6R7DTcxM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tohzByqfY2CCzqrejwMmYS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 07 Jun 2026 06:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 09 Jun 2026 08:42:37 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tohzByqfY2CCzqrejwMmYS-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing the superman exercise]]></media:description>                                                            <media:text><![CDATA[a woman doing the superman exercise]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing the superman exercise]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tohzByqfY2CCzqrejwMmYS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I like accessible workouts, so it's a good thing some of the best exercises for strong back and shoulder muscles can be done at home with minimal equipment. And these three moves only require a light set of dumbbells and one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats</a>.</p><p>These are exercises I use to train my clients, and they strengthen your back and shoulders, including some of the muscle groups in the mid and upper back that support the spine, reduce pain and improve posture.</p><p>If you experience back pain at any time, stop and rest. If you're working with an injury or health condition, or you are currently pregnant or post-natal, I recommend seeking advice before starting these exercises, as you'll be lying on your stomach throughout.</p><h2 id="watch-3-move-back-and-shoulder-strengthening-routine">Watch: 3-move back and shoulder-strengthening routine</h2><p><strong>The routine:</strong> 3-4 sets, 8-10 reps</p><ul><li><strong>Prone lat pull-down:</strong> Start on your stomach with your arms extended in front of you and your forehead resting on the mat. Hold a light weight in each hand. Lift your chest and arms and squeeze your back and glutes, then bend your elbows and draw them toward your sides. Pause, then extend your arms in front of you and lower to the mat. Keep your neck neutral by gazing down.</li><li><strong>T-shape Superman: </strong>Lie on your stomach with your arms extended to the sides, holding a light dumbbell in each hand. Rest your forehead on the mat. Lift and lower your arms as if flapping wings, squeezing your back and shoulder blades as you do.</li><li><strong>Back extension:</strong> Lie on your stomach with your arms extended in front of you and a light weight in each hand. Keep your gaze to the top of your mat, then lift your arms and chest into the air and squeeze your back, shoulders and glutes, keeping both arms straight. Your thighs should stay pressed into the mat throughout.</li></ul><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/DZRprdLkZsr/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h2 id="what-are-the-benefits-14">What are the benefits?</h2><p>Each of these exercises brings something slightly different to the table. </p><p><strong>Lat pull-downs </strong>work the latissimus dorsi muscles, which are wing-like muscles along the sides of the back. Your arms, shoulders and core are also working, but as the name suggests, this is a great one for width, targeting the lats. </p><p><strong>T-shape Supermans </strong>target the upper back and rear shoulders, including the scapular retractors and abductors. I like using it for stability, posture and shoulder joint mechanics. The mid and lower traps in your upper and mid-back are also working as you draw your shoulder blades together.</p><p><strong>Back extensions </strong>are great posterior chain strengtheners, targeting the muscles along the spine (erector spinae), glutes and hamstrings. It's also important for posture and injury prevention.</p><div><blockquote><p>Each of these exercises brings something slightly different to the table. </p></blockquote></div><p>The key to these exercises is control and slow movement focused on tension, contraction and both concentric and eccentric muscular contractions. That means both the lifting and lowering phases of each exercise matter, so don't rush or pull your reps early. </p><p>You can adjust the reps and sets as necessary, and play with the weights you use. As a guideline, I use 2kg weights, and these moves are deceivingly tough, so I would move toward lighter weights as a priority. You can always add load if you need to.</p><p>Squeeze your glutes, shoulders and back during each move, knitting the shoulder blades together. This will improve engagement and ensure you're activating properly.</p><p>Give these a try, and let us know how you get on in the comments.</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><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.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/wellness/fitness/i-tried-these-glute-bridge-variations-to-strengthen-my-hamstrings-heres-what-happened" target="_blank">I tried these glute bridge variations to strengthen my hamstrings — here's what happened</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/push-ups-are-the-exercise-you-can-do-anywhere-3-variations-to-try-if-you-want-to-build-chest-strength" target="_blank">Push-ups are the exercise you can do anywhere — 3 variations to try if you want to build chest strength</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/sit-all-day-try-these-7-back-exercises-from-a-physical-therapist-right-now" target="_blank">Sit all day? Try these 7 back exercises from a physical therapist right now</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget sit-ups and crunches: I use this simple Pilates exercise to build deep core strength and shoulder stability ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-sit-ups-and-crunches-i-use-this-simple-pilates-exercise-to-build-deep-core-strength-and-shoulder-stability</link>
                                                                            <description>
                            <![CDATA[ I use this simple Pilates exercise to build deep core strength and shoulder stability. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">d93WSL97wGdnVGViJ9bhDb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XFAW8EcDfecmBstbbZWpNE-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 07 Jun 2026 04:45:00 +0000</pubDate>                                                                                                                                <updated>Sun, 07 Jun 2026 10:44:07 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/XFAW8EcDfecmBstbbZWpNE-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing plank with knee drives]]></media:description>                                                            <media:text><![CDATA[a woman doing plank with knee drives]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing plank with knee drives]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XFAW8EcDfecmBstbbZWpNE-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When it comes to building strength and stability in your core, sit-ups and crunches aren’t the best way to do so. While these exercises are great at targeting the outer “six-pack” muscles, they don’t work the deepest layers of your midsection, responsible for stabilizing your spine and supporting your pelvis. </p><p>Instead, I use this simple Pilates exercise to build deep core strength and work on my shoulder stability at the same time. As a reminder, I’ve been practicing Pilates for the past 15 years, so what works for me might not be right for you and your body. If you’re a complete beginner, you’re currently practicing with an injury, or you’re pregnant or postpartum, it’s always best to seek personalized advice from a qualified professional. </p><h2 id="what-is-the-exercise-2">What is the exercise? </h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/3cSUsc92fPE" allowfullscreen></iframe></div></div><p>My go-to Pilates exercise for building endurance in my core and working on my shoulder stability at the same time is the plank with knee tuck. You can watch a video of Pilates instructor Cassie doing the exercise here. </p><p>The move works both your inner and outer core muscles at the same time, requiring total abdominal recruitment to stabilize your torso and drive your knee toward your chest. </p><p>Here’s how to do the Pilates plank with knee tuck: </p><ul><li>Start in a high plank position, with your wrists stacked underneath your shoulders and a straight line from the crown of your head to your heels.</li><li>Engage your core, sucking your belly button into your spine and zipping your abs up and in.</li><li>Think about pushing the ground away. Don’t let your shoulders sag.</li><li>From here, drive one knee in towards your chest. Pause, and then extend back to your starting position.</li><li>Repeat on the other side.</li><li>To increase the intensity, place your feet on sliders or a towel on a smooth floor. This will create a massive eccentric burn in your lower abs. Alternatively, drive your knee towards the opposite elbow — this will force your internal and external obliques to work.</li></ul><h2 id="what-are-the-benefits-15">What are the benefits?  </h2><p>This move might look simple, but it’s helping build strength and stability in your midsection. The active flexion involved as you drive your knee to your chest forces your deep abdominal muscles and outer ab muscles to fire in unison. The key here is to really move slowly and with control; the slower you move, the longer these muscles will remain under tension. </p><p>If, like me, you spend a lot of time sitting behind a desk, or your free time running, you’ll also be pleased to hear this exercise helps condition your deep hip flexors. If you spend too long sitting, your hip flexors can get tight, short, and weak. </p><p>Exercises like this strengthen the primary hip flexors — the psoas and iliacus muscles. Keep your core engaged as you move, really thinking about sucking your belly button into your spine, and you’ll help eliminate the hip weakness that can often trigger lower back tightness. </p><p>The most common mistake people make during this move is letting their hips drop as they extend their leg back to the high plank. Squeeze your glutes and engage your abs in high plank before moving your knees to avoid any hip sagging.</p><p>Finally, you’ll also be working on your shoulder stability during this move, as your deltoids will be working hard to stabilize your shoulder blades as your lower body moves. Your triceps and lats will also be getting a workout here. Keep focused on pushing the floor away as you move one leg, then the other. </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><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/DX_Bhf3jP_j/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W09zMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W09zMO.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/wellness/fitness/im-a-personal-trainer-and-if-i-were-60-these-are-the-6-exercises-id-do-to-build-strength-muscle-and-leanness" target="_blank">I'm a personal trainer, and if I were 60, these are the 6 exercises I’d do to build strength, muscle and leanness</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/you-dont-need-heavy-barbell-squats-to-strengthen-your-quads-glutes-and-hamstrings-try-the-pendulum-squat-instead" target="_blank">You don't need heavy barbell squats to strengthen your quads, glutes and hamstrings — try the pendulum squat instead</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget crunches, sit-ups, and planks: This 10-minute standing ab workout blasts your core while building functional strength ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-crunches-sit-ups-and-planks-this-10-minute-standing-ab-workout-blasts-your-core-while-building-functional-strength</link>
                                                                            <description>
                            <![CDATA[ Build functional strength in your core using these 6 exercises. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">33aroMp44TndNUc68gnxsY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/dSpCX2AQLeTQqg24hNAqnC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 06 Jun 2026 05:45:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/dSpCX2AQLeTQqg24hNAqnC-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty/jacoblund]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman outdoors in sunshine in a sports bra with her abs on show]]></media:description>                                                            <media:text><![CDATA[Woman outdoors in sunshine in a sports bra with her abs on show]]></media:text>
                                <media:title type="plain"><![CDATA[Woman outdoors in sunshine in a sports bra with her abs on show]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/dSpCX2AQLeTQqg24hNAqnC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Forget everything you know about ab workouts — you don’t need to spend hours lying on an exercise mat doing crunches and sit-ups to build a rock-solid core. In fact, some of the best exercises for building the<a href="https://www.tomsguide.com/news/build-your-own-5-move-functional-fitness-workout-with-arnold-schwarzenegger-heres-how"> functional fitness</a> you need to carry a heavy bag of groceries or lift a toddler from a car seat actually come from standing ab exercises. </p><p>Yet if you’re new to standing ab workouts, it can be difficult to know where to start. Luckily, if you’re looking for inspiration, you’ve landed in the right place. Below, I’ve shared my go-to standing ab workout from my favorite trainer, <a href="https://www.tiktok.com/@justtcocoo" target="_blank" rel="nofollow">Courteney Fisher</a>, the yoga and Pilates instructor behind Fit With Coco. </p><p>As a reminder, if you’re returning to fitness following an injury or pregnancy, it’s always best to seek personalized advice from a qualified professional. </p><h2 id="what-is-the-workout-5">What is the workout? </h2><p>The workout, designed by Fisher, only takes 10 minutes and consists of six different exercises. You’ll need a set of dumbbells to get the most out of this workout — check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a> for working out at home. </p><p>As a reminder, the right weight for you will feel challenging, but not impossible, by the final few reps. If at any time you feel like the weight is compromising your form, it’s too heavy. To avoid the risk of injury, it’s better to move with good form using a lighter weight. </p><p>Here are the exercises: </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@justtcocoo/video/7631810344687553805" data-video-id="7631810344687553805" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@justtcocoo" href="https://www.tiktok.com/@justtcocoo">@justtcocoo</a>                            <p>Standing ab workout!! Grab dumbbells and save this workout </p><a target="_blank" title="♬ som original - Vibesovibes" href="https://www.tiktok.com/music/som-original-7266211470721993478">♬ som original - Vibesovibes</a></section>                    </blockquote></div>                <ul><li><strong>Deep core marches</strong>: Think about really squeezing your core as you march one leg, then the other, up towards your torso. Suck your belly button into your spine and keep your arms straight, raising the dumbbell toward the ceiling.</li><li><strong>Elbow to knee crunches:</strong> Complete all of your reps on one side, then switch to the other side. Think about moving slowly and with control, touching your elbow to your knee, pausing, then returning to your starting position.</li><li><strong>Overhead press with march: </strong>This exercise is effectively a standing deadbug. As you raise your knee towards your torso, extend the dumbbell in the opposite hand toward the ceiling. Keep your core engaged throughout, switching sides to complete 10 reps on each side.</li><li><strong>Sumo squat with oblique crunch:</strong> Complete a sumo squat, holding a dumbbell in one hand. At the bottom of the squat, use your obliques to lower into an oblique crunch on the same side. The movement should be coming from your core, so squeeze your abs. Complete all your reps on one side, then switch to the other.</li><li><strong>Wood chops:</strong> This exercise works the internal and external obliques, as well as the deep transverse abdominis muscles that stabilize the spine. Remember to pivot your back foot as you turn, and keep your chest and eyes tracking the dumbbell.</li><li><strong>Squat to standing bicycle</strong>: For this variation, hold the dumbbell with both hands behind your neck. As you rise from your squat, squeeze your core and complete a standing bicycle, bringing your elbow to your knee across your body.</li></ul><h2 id="what-are-the-benefits-16">What are the benefits? </h2><p>As mentioned above, all of the exercises in this workout help you develop the functional fitness you’ll need in your everyday life, whether you’re swinging a golf club or carrying two heavy bags of groceries. The exercises in this workout are training your core to stabilize your spine while your limbs move.</p><p>Because you’re standing, you’re likely to be working harder and burning more calories doing these exercises than you would typically on the mat. All of these exercises are working more than just your core, but your midsection will be working hard to stabilize your body and work against gravity to keep you upright. You’re also less likely to strain your neck or lower back during standing ab exercises. </p><p>Finally, if you find it difficult to get down onto the floor due to an injury, mobility issues, or pregnancy, standing ab exercises are an excellent alternative. If you’re a beginner, you can do all of these exercises using just your bodyweight, and you’ll still be getting a great workout. </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><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/DX_Bhf3jP_j/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’m a personal trainer: I added these 3 balance drills to my weekly routine, and it's changing how I move daily ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-i-added-these-3-balance-drills-to-my-weekly-routine-and-its-changing-how-i-move-daily</link>
                                                                            <description>
                            <![CDATA[ These three balance exercises are helping me to increase strength and stability in my joints and muscles. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">HEyHQbJ8jKUWYEHg58veWM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rFmDncitwtNguzdZG8npiK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 06 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 09 Jun 2026 08:41:10 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rFmDncitwtNguzdZG8npiK-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Male in shorts and t-shirt balancing on one leg while hugging his knee outdoors ]]></media:description>                                                            <media:text><![CDATA[Male in shorts and t-shirt balancing on one leg while hugging his knee outdoors ]]></media:text>
                                <media:title type="plain"><![CDATA[Male in shorts and t-shirt balancing on one leg while hugging his knee outdoors ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rFmDncitwtNguzdZG8npiK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm 35, so while I'm not quite looking at how exercise impacts my later life just yet, I am thinking more about workout longevity and how it feels for my body. In the last year or so, I've steered away from high-impact exercise toward more low-impact exercise, like Pilates and yoga, and progressive weightlifting.</p><p>Despite <a href="https://www.tomsguide.com/wellness/fitness/a-47-year-study-tells-us-the-exact-age-when-your-strength-and-fitness-begin-to-decline-and-im-stunned">fitness markers declining as early as your 30s,</a> I feel stronger than ever; my posture has improved, and my core is more stable. I am thankful to balance training and mobility drills for their role in this.</p><p>If you think you might like to give it a go, here are <a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-i-added-these-3-balance-moves-to-my-daily-routine-and-theyve-changed-how-i-move">three balance exercises </a>I use to build stronger joints, boost balance and increase overall stability. They've already made a noticeable impact on my joints, especially my ankles and knees, which are problem areas for me as I'm hypermobile. </p><p>Learn how to do them below, why they're beginner-friendly, and the benefits. </p><h2 id="what-are-the-three-balance-exercises">What are the three balance exercises? </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5047px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5sMUHY3zfoRAACnCJHM5K7" name="shutterstock_2393281921" alt="a senior woman doing Pilates" src="https://cdn.mos.cms.futurecdn.net/5sMUHY3zfoRAACnCJHM5K7.jpg" mos="" align="middle" fullscreen="" width="5047" height="2839" 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>Balancing isn't just about how long you can stand on one leg for, although that's certainly part of it. It's about learning to use your core and maintain stability in an unbalanced, unstable environment. </p><p>That means it's an incredible form of<a href="https://www.tomsguide.com/features/what-is-functional-training"> functional training</a>, which means exercise that mimics or improves activities you'd typically do in your daily routine, like squatting, reaching, climbing, or standing on one leg to tie a shoelace.</p><p>Anyone, from elite sportspeople to exercise beginners, can benefit from improving balance, as you'll see crossover into longevity and strength, which are key as you age.</p><p>Adding strength exercises to your routine alongside mobility and balance drills can help protect muscles, bones, joints and ligaments and help prevent falls or trips.</p><p>Here are three I swear by.</p><p><em>If you’re new to exercise, working with an injury or illness, or have any contraindications to exercise, speak with a qualified medical professional before trying these movements. Remember, not every exercise is for every person, so listen to your body.</em></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/DZMRtZlj6uv/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li><strong>Bear plank to leg extension: </strong>Start in a tabletop position with your hands stacked under your shoulders and hips over your knees, then tuck your toes and lift your knees to hover a few inches above the mat. Zip your stomach in and brace, keeping your back flat. Extend one leg behind you without rotating your hips (they should face the mat) until your leg is hip height, then return to the bear plank. Repeat on the other side. <strong>3 sets, 6-10 reps per side</strong></li><li><strong>Standing clamshells: </strong>Stand with your feet hip-width apart and hinge forward at your hips so that your chest is near parallel to the ground. Place your hands on your hips with your core braced. Softly bend one knee, then lift the leg outward to hip height. Pause and balance, then slowly lower the leg again. Keep your hips square as above. <strong>3 sets, 6-10 reps per side</strong></li><li><strong>Lateral shoot-throughs: </strong>Start in the bear plank position above. Place your weight into your right hand, lift your left hand into the air, then lift your right leg, send it beneath your body and twist over to the left. Pause, then return to center and switch directions. <strong>3 sets, 6-10 reps per side.</strong></li></ul><p>There's a strong degree of core work involved in each move, and as your core muscles are responsible for stabilizing your spine and pelvis and aiding safe movement, this is a good thing!</p><p>I guide you to a <a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-crunches-why-this-5-minute-bracing-routine-builds-a-stronger-core-than-sit-ups-ever-will">5-minute bracing routine</a> you can try to help activate your core beforehand. As a general rule, try bracing your stomach as though expecting an impact; breathe using your diaphragm, directing your breath toward your stomach; lightly pull your navel in and up.</p><h2 id="how-do-i-modify">How do I modify?</h2><p>You can keep one knee planted during the bear plank and leg extension exercise and still test your balance. During clamshells, don't lift your leg as high to begin with and focus on grounding through your standing leg. Keep your hips as square as you can and squeeze your glutes, and hold onto something if you prefer. </p><p>Finally, slow the lateral shoot-through and focus on rotating through your waist; you don't have to kick all the way through to begin with or lift your hand high; just take a rest when you need it.</p><p>You can reduce your sets or reps, or hold on to something for support. </p><h2 id="what-are-the-benefits-17">What are the benefits?</h2><div><blockquote><p>Each movement focuses on engaging and strengthening your core muscles while targeting the stabilizer muscles in the body responsible for balance.</p></blockquote></div><p><strong>Bear planks with a leg raise</strong> are the ultimate test of anti-rotation, as you work hard to keep your hips square and body balanced. For an extra challenge, can you raise your opposite hand away from the mat?</p><p>This move strengthens your core, hips, quads, wrists, shoulders, arms and ankles, and improves ankle mobility. As you extend your leg, notice the stretch along your hip flexors and the engagement in your glutes and hamstrings; squeeze your glutes as you lift.</p><p>Anti-rotation exercises help you resist twisting, targeting your obliques, transversus abdominis and deep spinal stabilizers, which work together to stabilize the body as a unit.</p><p><strong>Standing clamshells</strong> work the standing leg and glute and target the outer glutes, or the gluteus medius muscles, as you open the hip and lift your leg. The hip hinge also helps activate the glutes, and your core and hamstrings are active throughout as you balance. </p><p>Notice all the small wobbles and don't be afraid of them; you're still strengthening the target muscles and you can still make improvements.</p><p>Finally,<strong> shoot-throughs</strong> are excellent at engaging your obliques through rotation as you twist from side to side. As you balance on one hand and the opposing foot, you're teaching both sides of the body to co-ordinate together.</p><p>The shoulder of the supporting arm will contribute toward stabilizing your body as you kick through, and to some degree, your legs and hips are working as well, though they are not the main focus of this exercise.</p><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="4rsq3mvUbMyCwhWQKpY2qY" name="GettyImages-2247267943 balance" alt="A group of mature exercisers balancing outside during a workout" src="https://cdn.mos.cms.futurecdn.net/4rsq3mvUbMyCwhWQKpY2qY.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>As you get older, the main goal is to train the joints and stabilizing muscles around them with a particular focus on the lower body. This isn't just about aging, though. Sportspeople like elite runners and footballers also need agility and balance training to help them accelerate, decelerate and change direction.</p><p>We want the body to be strong, mobile and stable to avoid a lack of mobility, bone density, or muscle mass. The good news is that the routine is low-impact, so you can repeat balance training several times per week and measure how you improve. </p><p>As you improve, see if you can add resistance bands above the knees or adapt sets and reps to challenge you more. Can you lift your leg higher? Move slower? You can wobble as much as you need to; it's part of the fun and practice.</p><p>Remember to <a href="https://www.tomsguide.com/news/this-is-the-most-important-thing-to-do-when-working-your-abs-according-to-a-personal-trainer">engage your core </a>throughout. A stronger core can help improve your balance, and so can breathing during every rep.</p><p>I've been adding these moves to my routine regularly, and I am already noticing an enormous amount of benefit for balance and control. I highly recommend giving them a try several times per week if you can.</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><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/DX_Bhf3jP_j/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/forget-frog-pose-i-added-weighted-hip-rolls-to-my-mobility-routine-and-my-hip-strength-has-transformed-in-just-3-weeks" target="_blank">Forget frog pose — I added weighted hip rolls to my mobility routine, and my hip strength has transformed in just 3 weeks</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40" target="_blank">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-sit-ups-to-build-strong-stable-abs-mcgill-curl-ups-are-elite-and-heres-how-to-do-them" target="_blank">Stop doing 100s of sit-ups to build strong, stable abs. McGill curl-ups are elite, and here's how to do them</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget sit-ups and crunches — I added this abs exercise to my workouts, and my core is still trembling ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-added-this-three-legged-plank-and-tiger-curl-combination-to-my-ab-workouts-and-its-made-me-forget-sit-ups-and-crunches-for-good</link>
                                                                            <description>
                            <![CDATA[ The three-legged plank and tiger curl exercise is a powerhouse for core, shoulder and hip strength. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">o59w49Lxmhn9vcEJsS7SdU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HNZvy8ncRBiKoPRMHdaJUC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 05 Jun 2026 09:00:00 +0000</pubDate>                                                                                                                                <updated>Tue, 09 Jun 2026 08:36:21 +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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/HNZvy8ncRBiKoPRMHdaJUC-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a man doing high plank with leg lifts]]></media:description>                                                            <media:text><![CDATA[a photo of a man doing high plank with leg lifts]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a man doing high plank with leg lifts]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HNZvy8ncRBiKoPRMHdaJUC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm always hunting for abs exercises that get my core trembling, but they need to actually produce results <em>over</em> time, not just a burn<em> at</em> the time. For that reason, I started introducing the three-legged plank and tiger curl exercise combination to my abs workouts, and I don't regret it for a second.</p><p>This move, as the name suggests, combines a three-legged plank (challenging enough on its own) with a tiger curl, which involves drawing the knee under the body toward the nose. You'll work one side at a time, testing anti-rotation, balance, stability and strength.</p><p>If you're intrigued to try it as well, I show you how to do the plank variation below, plus the benefits and some key tips for melting that midsection. Read on for more.</p><h2 id="what-is-the-three-legged-plank-to-tiger-curl-exercise">What is the three-legged plank to tiger curl exercise?</h2><p>When exercising my core muscles, I try to focus less on the abs and more on the deeper stabilizer muscles that support the spine and pelvis, like the transverse abdominis (a belt of muscle around the abdomen), internal obliques, and pelvic floor muscles. That's because these are the muscles that support safe and stable movement and protect you from force, impact and injury.</p><p>There are a few <a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility">go-to exercises for working my deep abdominal muscles,</a> but this move doesn't just target your abs or core muscles as a whole; it also strengthens your hips, lower back, shoulders and arms, and stretches your back in the curl position, if performed properly.</p><p><em>If you’re a complete beginner, returning to exercise following an injury, or you’re pregnant or postpartum, check in with a qualified professional before trying anything new. </em></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/DZKIcgAk09w/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li>Start in a high plank position, with your wrists stacked directly underneath your shoulders, your core engaged and your back straight</li><li>Squeeze your core, bracing your abdominal muscles as if you were to be punched in the stomach</li><li>Raise your right leg away from the mat to hip height, keeping your hips square to your mat and aligned with your shoulders. Your hips shouldn't turn out, drop, or shoot up to the ceiling</li><li>Press through your hands to lift your upper back and separate your shoulder blades, then draw your right knee beneath the body toward your nose</li><li>Moving slowly and with control, pause, then return to three-legged plank</li><li>Complete 8-10 reps on one side, then switch. Aim for 2-3 sets.</li></ul><p>It's incredibly easy to strain your lower back during the three-legged plank because you have less support from your lower body and rely heavily on your core and hips to keep you stable.</p><p>Try to avoid arching your lower back; zip your stomach in, press through your hands and consider lowering your leg slightly if needed. Engage as many muscles as you can, too, not just your core, as this creates a more robust foundation to move from.</p><p>To help keep your core engaged, exhale as you perform the tiger curl and inhale as you return to the three-legged plank.</p><h2 id="what-are-the-benefits-18">What are the benefits? </h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.js" async></script><p>The slow, controlled curling motion of this move works the abs hard; the three-legged position emphasizes the lower abs and hips, and the plank itself, along with the curl, will hit your upper body, including your arms, upper back and shoulders. Naturally, while it isn't a leg exercise, the plank, especially the three-legged plank, also works your legs, including your quads and hamstrings.</p><p>There is some weight-bearing on the wrists, so if you find this difficult, take extra rest or consider elevating your hands using dumbbells or blocks. </p><p>Try to curl the spine instead of just drawing your knee to your wrists. This will give you enough space to bring your knee under your body and toward your nose in an arcing motion. The slower you perform this move, the more you'll feel it.</p><h3 class="article-body__section" id="section-why-i-love-this-core-exercise-so-much"><span>Why I love this core exercise so much</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:7528px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="hf38iNKPGxXgn4j9VqsFWm" name="shutterstock_2105244188 abs" alt="Woman smiling at camera with hands on hips showing abs in activewear" src="https://cdn.mos.cms.futurecdn.net/hf38iNKPGxXgn4j9VqsFWm.jpg" mos="" align="middle" fullscreen="" width="7528" height="4234" 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 am fussy when it comes to programming ab workouts for clients, and the same goes for my own time spent on the mat. Where possible, I prioritize three things as a trainer:</p><ul><li><strong></strong><a href="https://www.tomsguide.com/features/time-under-tension-what-is-it-and-could-it-help-you-grow-muscle"><strong>Time under tension</strong></a>: How long the muscles stay contracted for, in short. Three-legged plank tiger curls keep your whole body under tension through all phases of the reps</li><li><strong>Bang for buck:</strong> <a href="https://www.tomsguide.com/face-off/isolation-vs-compound-exercises-which-is-better-for-building-muscle">Compound exercises</a> are multi-joint, multi-muscle moves like this one, whereas isolation exercises typically focus on a single muscle group</li><li><strong>Progression: </strong>Moves that offer progression will keep your muscles challenged as you get stronger over time. I wouldn't progress exercises until the rep ranges or sets feel too easy. The last few reps should always feel like a push. This abs exercise can be developed by adding reps, slowing things down further (<a href="https://www.tomsguide.com/wellness/fitness/personal-trainer-shares-3-tempo-training-tips-to-get-more-from-your-strength-workouts">tempo training</a>), or adding load in the form of a resistance band, ankle weights, or a weight vest.</li></ul><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><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/DWvhgVoEaf5/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40" target="_blank">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/forget-frog-pose-i-added-weighted-hip-rolls-to-my-mobility-routine-and-my-hip-strength-has-transformed-in-just-3-weeks" target="_blank">Forget frog pose — I added weighted hip rolls to my mobility routine, and my hip strength has transformed in just 3 weeks</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stop doing 100s of sit-ups to build strong, stable abs. McGill curl-ups are elite, and here's how to do them ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-sit-ups-to-build-strong-stable-abs-mcgill-curl-ups-are-elite-and-heres-how-to-do-them</link>
                                                                            <description>
                            <![CDATA[ Here’s everything you need to know about the modified McGill curl-up for building core strength and control. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NboZsyRdDRLVNYJXs4EpwT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BfhAdAuAdKtmKrr2RnjDbN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 04 Jun 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BfhAdAuAdKtmKrr2RnjDbN-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman in gym kit lying on a yoga mat]]></media:description>                                                            <media:text><![CDATA[a woman in gym kit lying on a yoga mat]]></media:text>
                                <media:title type="plain"><![CDATA[a woman in gym kit lying on a yoga mat]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BfhAdAuAdKtmKrr2RnjDbN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been a few years since I added a regular core practice to my training routine, and I've never looked back. For example, Pilates has built my core muscles to be the strongest, most stable, and most enduring they've ever been, compared with heavy weightlifting, yoga and CrossFit. </p><p>One of the best core exercises that really blasts my deeper core muscles is the McGill curl-up, which is a modified curl-up you might see featured in Pilates or other abs workouts. This looks simple, but it protects your lower back while targeting the deep stabilizer muscles in your core. Read on to learn more.</p><p>As a reminder, this exercise is beginner-friendly, but what works for my body might not be right for you. If you’re a beginner, pregnant or postpartum, or you’re dealing with an injury, it’s always best to seek personalized advice from an expert, as I did for this curl-up variation.</p><h2 id="what-is-the-exercise-3">What is the exercise? </h2><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ONKRJX"></div>                            </div>                            <script src="https://kwizly.com/embed/ONKRJX.js" async></script><p>Any move that teaches you to create, maintain, and control tension in your core muscles is an exercise worth knowing. So, rather than peddling out endless sit-ups, why not try McGill curl-ups? </p><p>The exercise should produce little motion. Try to hold for at least a few seconds at the top with your neck neutral while breathing expansively through your core as you brace. Avoid letting your hip flexors take over the exercise. If you're unsure what "bracing" means, I teach you how to engage your core properly with a <a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-crunches-why-this-5-minute-bracing-routine-builds-a-stronger-core-than-sit-ups-ever-will">5-minute bracing routine</a>. </p><p>Below, I have included a demonstration from the guys at McEvoy Movement Clinic.</p><p>Here’s how to do the McGill curl-up with good form.</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/e0xkSRE8_Cw" allowfullscreen></iframe></div></div><ul><li>Lie on your back with your legs bent and feet planted, then extend one leg down onto the mat. If you leave your right knee up, place your right hand on your stomach; if you leave your left knee up, place your left hand on your stomach</li><li>Place the other hand beneath the natural arch of your lower back</li><li>Press your lower back into your hand toward the mat beneath you</li><li>With control, peel your shoulders away from the mat and lift your chest upward toward the ceiling, keeping your chin tucked and gaze ahead. Your back should be straight rather than sitting all the way up and forward like a sit-up or crunch</li><li>Contract your core muscles as much as possible throughout. Pause at the top, then slowly lower your back to the mat again.</li></ul><p>If you feel your lower back lifting away from your hand, it’s a sign you’re not properly engaging your core as much as you think — draw your belly button toward your spine and zip your abs up and in. </p><h2 id="are-curl-ups-good-for-the-back">Are curl-ups good for the back?</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1615px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="dSpCX2AQLeTQqg24hNAqnC" name="heel touches 2.jpg" alt="Woman outdoors in sunshine in a sports bra with her abs on show" src="https://cdn.mos.cms.futurecdn.net/dSpCX2AQLeTQqg24hNAqnC.jpg" mos="" align="middle" fullscreen="" width="1615" height="908" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty/jacoblund)</span></figcaption></figure><p>Here’s what it’s doing to your body: </p><p><strong>Targeting your core with less impact</strong></p><p>McGill curl-ups, or modified curl-ups, are much friendlier for your lower back than moves like sit-ups, as your lower back is supported and you are not moving through any extreme range of motion, like hyperextension or flexion, or spinal compression. This move also teaches you to control and strengthen, which is great for overall core strength.</p><p><strong>Maintaining the natural curve of the spine</strong></p><p>Your hand position means the spine can maintain its natural curve, and you can neutralize the spine more, rather than just pressing down into the mat.</p><p>There's some debate about where your gaze should land; some encourage a chin tuck with the gaze ahead, others teach to keep the neck neutral and gaze up toward the ceiling. Your head, neck and shoulders should lift together, though, creating one straight line, and there shouldn't be tension in the neck.</p><p><strong>Teaching core control</strong></p><p>Your core is made up of different muscles. Sit-ups and crunches target the outer “six-pack” muscles; your deep transverse abdominis muscles are your body’s natural corset, keeping your torso stable and protecting your spine, for example.</p><p>During the McGill curl-up, try to contract your abdominals and hold for at least a few seconds, up to 10 seconds, as you breathe with your stomach, rather than your chest.</p><p>Slowly lift; this might even just be a few inches away from the mat, and you can also rest on your elbows and use both hands behind your back if you need to. Try to relax after every rep. This builds functional strength and teaches you to brace during other core exercises or when playing sports or lifting weights.</p><p>Advice on reps and sets varies, but as a beginner, aim for fewer and build up. If you feel good, you can increase. Start with 2-3 sets of 5-10 reps, then switch legs and hands. Once you’re ready to progress, try regular <a href="https://www.tomsguide.com/wellness/workouts/no-sit-ups-crunches-or-planks-this-is-the-staple-pilates-exercise-i-use-to-build-endurance-in-my-core">Pilates curl-ups</a>, or increase the sets and reps. </p><p><em>Always consult with a physical therapist or healthcare provider, especially if you are recovering from a lower back or disc injury.</em></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><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/DWvhgVoEaf5/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/not-sit-ups-planks-or-crunches-i-do-this-simple-pilates-exercise-every-single-day-to-build-a-strong-and-stable-core-and-work-on-my-hip-flexor-mobility" target="_blank">Not sit-ups, planks, or crunches: I do this simple Pilates exercise every single day to build a strong and stable core and work on my hip flexor mobility</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40" target="_blank">I'm a weightlifting coach — 3 exercises I prefer over lunges for building strong, stable legs and knees over 40</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm a weightlifting coach — 3 exercises I prefer over 'standard' lunges for building strong, stable legs and knees over 40 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness/im-a-weightlifting-coach-3-exercises-i-prefer-over-lunges-for-building-strong-stable-legs-and-knees-over-40</link>
                                                                            <description>
                            <![CDATA[ You can build a strong, stable lower body using three weightlifting exercises rather than lunges, says a personal trainer, who explains how and the benefits. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DGK5n7TczwJ7KkUUjRZLSd</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FUx3hbomD7szZr7k4grczY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 03 Jun 2026 07:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 10 Jun 2026 14:18:57 +0000</updated>
                                                                                                                                            <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FUx3hbomD7szZr7k4grczY-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Man outdoors performing lunge with set of dumbbells on a walkway in nature]]></media:description>                                                            <media:text><![CDATA[Man outdoors performing lunge with set of dumbbells on a walkway in nature]]></media:text>
                                <media:title type="plain"><![CDATA[Man outdoors performing lunge with set of dumbbells on a walkway in nature]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FUx3hbomD7szZr7k4grczY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’m so bored of seeing lunges forced on people who don't like them — yes, they build stronger lower-body muscles and joints, but are they hands down the best exercise for leg strength? Not for everyone.</p><p>Reverse lunges are the standard variation most people will try if walking lunges or front lunges don't work for their knees, but what if lunges are just off the table altogether? </p><p>Whenever I’m asked what exercises clients should be doing to strengthen their legs, I say three things, and only one of them accounts for the actual exercises: consistency, progression, and <a href="https://www.tomsguide.com/face-off/isolation-vs-compound-exercises-which-is-better-for-building-muscle">compound exercises</a>. </p><p>Here are three beginner-friendly, effective weightlifting exercises that will build a strong set of legs, improve joint stability, and even work on your core strength and balance.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-W09zMO"></div>                            </div>                            <script src="https://kwizly.com/embed/W09zMO.js" async></script><h2 class="article-body__section" id="section-are-lunges-bad-for-you"><span>Are lunges bad for you?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="a7mDDYF5XtwsP25u2JajpZ" name="shutterstock_1878571801 lunges workout.jpg" alt="Man performing bodyweight lunges outdoors next to ocean" src="https://cdn.mos.cms.futurecdn.net/a7mDDYF5XtwsP25u2JajpZ.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" 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>Lunges aren't "bad"; they just don't suit everyone's bodies. If you're working with a health condition or injury, or your form isn't quite there, lunges can be painful, but there are plenty of lunge variations you can try or complete alternatives if those don't feel good for you.</p><p>While lunges, especially loaded lunges, are great additions to any strength program, the first thing you should think about is building a sustainable program that includes big, powerful lifts performed consistently and with <a href="https://www.tomsguide.com/features/progressive-overload-what-is-it-and-how-does-it-help-build-muscle-and-strength">progressive overload</a>. If lunges don't make the cut, I promise you, it won't stop you from getting results.</p><p>The three lower-body exercises below help your body recruit and coordinate as one, balanced unit, and also target other muscle groups, like your hips and core. They are functional, effective, and efficient, so who needs lunges?</p><p>It's worth a reminder that just because these are standard lunge alternatives, it doesn't mean these will suit you. If you experience pain, are pregnant or post-natal, working with an injury or health condition, or are returning to workouts from time away, please consult a relevant qualified professional before proceeding.</p><h2 id="what-are-the-exercises-for-a-strong-lower-body">What are the exercises for a strong lower body?</h2><p>Below, I showcase three moves you can try that might feel less impactful on your knees, plus how to do them. Try 3-4 sets and 8-10 reps per side per move.</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/DZHqirSjtfk/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li><strong>Static split squats: </strong>Start with your left foot forward and right foot back, as if about to perform a lunge. Perform with your bodyweight or rack a weight to your chest or shoulder. Engage your core. Slightly hinge forward at your hips, bend your back knee, and lower it to lightly tap the ground. Pause, then drive up through your legs to stand. <strong>Remember to switch sides.</strong></li><li><strong>Staggered RDL: </strong>Stand with your feet hip-width apart and hold a weight in your right hand, then step your right foot back so that your right toes roughly align with your left heel. Rest on the ball of your right foot, like a kickstand. Engage your core. Hinge forward at the hips, softly bend the knees, then lower the weight toward the ground, keeping your back straight and gaze slightly ahead. Pause, then drive up to stand. <strong>Remember to switch sides.</strong></li><li><strong>Bulgarian split squat: </strong>Stand in front of a bench, stable chair, or similar with feet hip-width apart. Step your right foot onto it, resting on the top of the foot. Your left foot should be planted down in front. Engage your core. Perform bodyweight, with a weight to your chest, or a weight on your shoulder. Hinge at the hips, bend your back knee, and lower it toward the chair in a sweeping or arcing motion (not vertically down). Pause, then drive up to stand. <strong>Remember to switch sides.</strong></li></ul><p>These moves target your quads, hips, core, glutes, hamstrings, and, to some degree, your calves, while strengthening your joints and bones under load. For many, the stepping motion of a lunge hurts the knees, so this takes away that motion. You still use a unilateral (single-sided) exercise (great for balance and equal strengthening), without sacrificing stability and overall control.</p><p>I love using <a href="https://www.tomsguide.com/how-to/how-to-do-Bulgarian-split-squats">Bulgarian split squats </a>for glute development. This exercise gets a lot of debate at the moment, as people argue over what the move targets and how the back leg should travel. </p><p>I've always been taught you should aim for a sweeping or arcing motion with the back knee toward your bench rather than moving vertically; if you follow this, still keep much of the weight in your front standing leg and slightly hinge at the hips to work the gluteus muscles harder.</p><div><blockquote><p>These moves target your quads, hips, core, glutes, hamstrings, and, to some degree, your calves, while strengthening your joints and bones under load.</p></blockquote></div><p>Regular split squats are slightly more beginner-friendly if you find elevating your foot too challenging in terms of balance and stability. With both feet on the ground, you can focus on the exercise with a little more control. </p><p>However, as you lower your back knee, try to enforce that hip hinge I mention above; this will help you target the glutes more. </p><p><a href="https://www.tomsguide.com/features/i-did-kettlebell-single-leg-deadlifts-everyday-for-a-week-heres-what-happened-to-my-body">Single-leg RDLs</a> are another popular choice to replace lunges, though they focus on strengthening the muscles along the back of the body known as the posterior chain, like the muscles in your back, glutes and hamstrings, as well as your hips. If you hold a weight, your arms and core will usually work harder, and this will test control and stability if you load on one side at a time.</p><p>The <a href="https://www.tomsguide.com/how-to/how-to-do-a-romanian-deadlift">Romanian deadlift</a> is performed with a soft but locked knee bend, so it's more hamstring-dominant than other variations. But whichever you choose to use, this exercise builds functional strength in your lower body and core.</p><h2 class="article-body__section" id="section-who-needs-lunges-to-build-stronger-legs"><span>Who needs lunges to build stronger legs?</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:8688px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q8vpny5WTyw6H2doxzmtMQ" name="lunges.jpg" alt="A photo of two women doing walking lunges" src="https://cdn.mos.cms.futurecdn.net/Q8vpny5WTyw6H2doxzmtMQ.jpg" mos="" align="middle" fullscreen="" width="8688" height="4887" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: kali9)</span></figcaption></figure><p>There are so many alternatives to popular "gold standard" exercises like front squats, lunges, or deadlifts if your knees don't like them. During each exercise above, focus on moving through as much range of motion with every rep as you can. This essentially means juicing the most out of the lemon, if you will. </p><p>That might mean reducing the weight or reps you use, but who cares? You're building stronger muscles and joints, and that's what matters.</p><p>Finally, think of your core as the midline of your body; it’s a power center that helps your body move properly while stabilizing your spine, ribcage, and pelvis. If you’re unsure what “core” really means, I recommend my guide on the <a href="https://www.tomsguide.com/wellness/fitness/abs-vs-core-muscles-heres-why-you-should-know-the-difference">difference between abs and core muscles</a>. </p><ul><li><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></li></ul><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/DY6QzNTkk0e/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/im-a-personal-trainer-and-if-i-were-60-these-are-the-6-exercises-id-do-to-build-strength-muscle-and-leanness" target="_blank">I'm a personal trainer, and if I were 60, these are the 6 exercises I’d do to build strength, muscle and leanness</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/you-dont-need-heavy-barbell-squats-to-strengthen-your-quads-glutes-and-hamstrings-try-the-pendulum-squat-instead" target="_blank">You don't need heavy barbell squats to strengthen your quads, glutes and hamstrings — try the pendulum squat instead</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I'm a personal trainer, and if I were 60, these are the 6 exercises I’d do to build strength, muscle and leanness ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness/im-a-personal-trainer-and-if-i-were-60-these-are-the-6-exercises-id-do-to-build-strength-muscle-and-leanness</link>
                                                                            <description>
                            <![CDATA[ Improve strength, muscle and leanness after 60 with these six exercises from a personal trainer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">9khGJepyPFdPcHr8wbpZyY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EzNvmDwhZJ3AgMiHPYPvtn-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Lucy Miller ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/s9KatBYrBQVZzj5oPAagPM.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Miller&amp;nbsp;is a Journalist, Level 3 Personal Trainer, Nutritional Advisor and Children’s Fitness Specialist. She holds fitness qualifications from NASM Training and Premier Training International and has been a fitness journalist and model for over 20 years. Since going freelance in 2014, Lucy left Men’s Fitness Magazine to write for an abundance of top consumer titles such as Women’s Health, Women’s Fitness, Glamour, Top Sante, The Guardian and Runners World.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;She’s also extremely passionate when it comes to educating others about health and physical activity and loves inspiring and working with children and adults to help make fitness fun, sustainable and accessible.&amp;nbsp;In her spare time, Lucy is ever the sportswoman. Once a national gymnast, having won three national titles, she has also run a handful of marathons around the world and loves to test her physical and metal side with regular running and gym sessions, not to mention ballet, bootcamp, boxing and TRX.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EzNvmDwhZJ3AgMiHPYPvtn-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman flexing her biceps and smiling]]></media:description>                                                            <media:text><![CDATA[a woman flexing her biceps and smiling]]></media:text>
                                <media:title type="plain"><![CDATA[a woman flexing her biceps and smiling]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EzNvmDwhZJ3AgMiHPYPvtn-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Strength training is having a major moment right now, especially when it comes to longevity and healthy aging. That’s because we naturally lose muscle mass and power with age, a process known as sarcopenia, which can affect everything from posture and balance to joint health and mobility.</p><p>It can also slow your <a href="https://www.tomsguide.com/news/slow-metabolism-this-could-be-the-secret-to-better-workouts">metabolism</a> and make everyday tasks feel more challenging than they used to be. Muscle mass is closely linked to how independent and mobile you’ll remain at 60, 70, 80 and beyond.</p><p>The good news is that your body is still highly trainable in your 60s, and you don’t need hours in the gym or complicated equipment to get stronger. According to Celebrity personal trainer and women's wellness coach <a href="https://aimeevictorialong.co.uk/" target="_blank" rel="nofollow">Aimee Victoria Long</a>, focusing on a few key movement patterns consistently can help you build strength, support bone density and maintain confidence and independence as you age. </p><p>Here are the six strength exercises she prioritizes for people over 60. And remember, it’s always best to seek personalized advice from a qualified professional before you start an exercise plan.</p><h3 class="article-body__section" id="section-what-are-the-6-strength-exercises"><span>What are the 6 strength exercises?</span></h3><p>“You need a plan that hits legs, glutes, upper body and core stability,” says Long. “Because that’s what makes stairs easier, shopping bags lighter and everyday life feel effortless.”</p><p>All you need for this workout is a chair or a low step and a set of dumbbells. You can check out the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a>, but if you don’t have weights to hand, heavy water bottles or household objects will work just as well.</p><p>Start light and build gradually; the final few reps should feel challenging, but never impossible. That’s where the magic happens.</p><p>For the workout, you’ll do six different exercises in total. Long recommends doing these exercises two to three times a week on non-consecutive days. Start with two sets of each move and build up to three over time, resting for 60 to 120 seconds between sets.</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/DYmzoYhMCEQ/" target="_blank">A post shared by Lucy Miller (@lucycmiller_)</a></p><p>A photo posted by  on </p></blockquote></div><h3 class="article-body__section" id="section-1-sit-to-stand-chair-squat"><span>1. Sit to stand (chair squat)</span></h3><p><strong>Reps: 8-12</strong><br><strong>Sets: 2-3</strong></p><p>Sit on a sturdy chair with your feet hip-width apart. Gently brace your core, lean slightly forward from the hips, then stand up without using your hands if possible. Slowly lower yourself back down with control.</p><p>To make it harder, lower the chair height slightly or hold a light dumbbell at your chest.</p><p>“This move is one of the best exercises for building real-life lower-body strength, helping support your knees and hips while making everyday movements like getting out of a chair or climbing stairs feel easier,” says Long.</p><h3 class="article-body__section" id="section-2-incline-push-up"><span>2. Incline push-up</span></h3><p><strong>Reps: 8-15</strong><br><strong>Sets: 2-3</strong></p><p>Place your hands on a wall, countertop, or bench, depending on your strength level. Walk your feet back so your body forms a straight line. Lower your chest toward the surface, then press back up.</p><p>“Push-ups aren’t just for younger exercisers,” explains Long. “Incline push-ups are great for maintaining upper-body strength, supporting shoulder health and building strength through the chest and arms,” she says. “To make the exercise harder, use a lower surface or slow down the lowering phase.”</p><h3 class="article-body__section" id="section-3-one-arm-dumbbell-row"><span>3. One-arm dumbbell row</span></h3><p><strong>Reps: 8-12 reps each side</strong><br><strong>Sets: 2-3</strong></p><p>Place one hand and knee on a bench or support yourself using a chair. Hold a dumbbell in the opposite hand with your arm hanging down. Pull the weight toward your hip while squeezing your shoulder blade back, then lower slowly.</p><p>“Rows are one of my go-to exercises for improving posture and strengthening the upper back,” says Long. “To increase muscle engagement, pause briefly at the top.” </p><h3 class="article-body__section" id="section-4-step-up"><span>4. Step-up</span></h3><p><strong>Reps: 6-10</strong><br><strong>Sets: 2-3</strong></p><p>Using a low step or platform, place one foot fully on the step and press through your heel to stand up. Bring the opposite foot up, stand tall, then lower back down with control. Complete all reps on one side before switching.</p><p>“Single-leg strength becomes increasingly important as we age because it helps improve balance and stability,” says Long. “To progress the move, increase the step height gradually or hold light weights.”</p><h3 class="article-body__section" id="section-5-romanian-deadlift-rdl"><span>5. Romanian deadlift (RDL)</span></h3><p><strong>Reps: 6-10</strong><br><strong>Sets: 2-3</strong></p><p>Stand tall, holding a pair of light dumbbells in front of your thighs. Keeping a soft bend in your knees, push your hips back while lowering the weights toward mid-shin. Keep your back long and chest lifted, then squeeze your glutes to return to standing.</p><p>“Strong glutes and hamstrings are essential for posture, walking power and supporting your lower back,” says Long. “Add weight gradually or slow down the lowering (eccentric) phase to increase the challenge.”</p><h3 class="article-body__section" id="section-6-farmer-s-walk"><span>6. Farmer's walk</span></h3><p><strong>Reps: 20-40 seconds</strong><br><strong>Sets: 2-4</strong></p><p>Hold a dumbbell in each hand and stand tall with your shoulders relaxed. Walk slowly and steadily while keeping your posture upright and your core engaged.</p><p>“This is full-body life strength,” says Long. “Grip, core, posture and resilience. To progress the exercise, increase the weight before increasing the time or distance.”</p><h2 id="why-these-moves">Why these moves?</h2><p>Together, these exercises target all the major muscle groups while also improving balance, posture and core stability. Long also recommends starting lighter than you think if you’re new to strength training or returning after a break. </p><p>“Focus on controlled movement and good form before adding heavier weights,” she says. "Don’t forget to do a short warm-up, such as a brisk walk and a few practice reps. It’s important to help prepare your joints and muscles before training.” </p><ul><li><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></li></ul><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/we-know-weight-training-prevents-muscle-loss-after-40-but-what-3-moves-should-you-start-with" target="_blank">We know weight training prevents muscle loss after 40, but what 3 moves should you start with?</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture" target="_blank">I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture</a></li><li><a href="https://www.tomsguide.com/news/these-6-stretches-for-beginners-boost-flexibility-in-your-hamstrings-calves-and-ankles" target="_blank">Best ankle stretches</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tried a 7-day standing core routine. Here are the differences I noticed in my strength and posture ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-tried-a-7-day-standing-core-routine-here-are-the-differences-i-noticed-in-my-strength-and-posture</link>
                                                                            <description>
                            <![CDATA[ This 7-day standing core routine is packed with challenging exercises that help improve your balance and posture while training your abs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pLSRLtCSUNL9STztEcT76Y</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Z557dUib6GUUPun6BWnk4c-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 01 Jun 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Adam Meyer ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XNz6B37KjitwagZsPjswYi.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Z557dUib6GUUPun6BWnk4c-1280-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/Z557dUib6GUUPun6BWnk4c-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Most of my <a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-sit-ups-im-a-personal-trainer-and-i-use-bear-plank-openers-to-build-strong-abs-and-hips-instead">core training</a> happens on the floor. Planks, dead bugs, crunches, you know the drill. So when I kept seeing trainers online recommending standing core workouts for posture, balance, and “functional strength,” I initially dismissed them as watered-down ab exercises for people who didn’t want to get on a mat.</p><p>Boy, was I wrong.</p><p>After spending the better part of the last two decades lifting weights, running marathons, and sitting at a desk for far too many hours each day, I’ve noticed my core strength doesn’t always translate into good posture. I can do plenty of <a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-or-sit-ups-heres-the-one-abs-exercise-you-need-for-elite-core-strength-and-stability-without-weights">sit-ups</a> and hold a solid plank, but after a long writing session, I still catch myself slouching forward like a shrimp over my keyboard. That disconnect made me curious about standing core training, which focuses less on six-pack aesthetics and more on stability and posture.</p><p>So I decided to try a simple standing core routine every day for a week to see whether it would make any noticeable difference in my posture, balance, and core strength. “Standing core exercises are beneficial because they train the body in positions we naturally use throughout the day,” says <strong>Abbie Watkins, CPT</strong>, certified personal trainer with <a href="https://www.origym.co.uk/blog/author/abbiew/" target="_blank" rel="nofollow">OriGym</a>. “When you perform standing exercises, your core has to stabilise your spine while you balance or shift weight, which mirrors real-life movement patterns.”</p><p>For this experiment, I performed the same five <a href="https://www.tomsguide.com/wellness/fitness/these-7-standing-ab-exercises-target-your-core-without-a-single-sit-up-or-crunch-and-theyre-great-for-your-posture-too">standing core exercises</a> every day for seven days. The routine took around 10 to 15 minutes total, and I focused on proper form with control rather than rushing through reps. Here’s the routine I followed and what happened after a week.</p><h3 class="article-body__section" id="section-1-standing-knee-drives"><span>1. Standing knee drives</span></h3><p>Standing knee drives force your core to stabilize while balancing on one leg, and I noticed my hip flexors and lower abs working far more than expected. By day three, I also realized how much concentration it took to stay upright without leaning backward or collapsing through my torso. “Standing knee drives are excellent for improving lower abdominal control and balance,” explains Watkins.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="R83n5hfzYFn2B2KxwMizXo" name="standing knee drive" alt="an illo of a woman doing standing knee drives" src="https://cdn.mos.cms.futurecdn.net/R83n5hfzYFn2B2KxwMizXo.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><strong>How to do it:</strong></p><ul><li>Stand tall with your feet hip-width apart and your core engaged.</li><li>Lift your right knee toward your chest until it reaches hip height.</li><li>At the same time, drive your left arm forward.</li><li>Pause for one to two seconds while balancing on your standing leg.</li><li>Lower slowly back to the starting position.</li><li>Repeat on the opposite side.</li><li>Perform three to four sets, 10 to 12 reps per side.</li><li>Rest for 45 to 60 seconds between sets.</li></ul><h3 class="article-body__section" id="section-2-standing-oblique-crunches"><span>2. Standing oblique crunches</span></h3><p>I expected this movement to feel like a standing version of a bicycle crunch, but it ended up feeling more like a <a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-i-added-these-3-balance-moves-to-my-daily-routine-and-theyve-changed-how-i-move">balance exercise</a>. The slower I moved, the more I felt my obliques (side abs) and glutes working together to stabilize my body. Rushing through reps made the movement feel sloppy and far less effective. By the end of the week, this was the exercise where I noticed the biggest improvement in my coordination and control.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pxXSiLhFgQXJhYBfV5iAPH" name="oblique crunches" alt="an illo of a woman doing standing oblique crunches" src="https://cdn.mos.cms.futurecdn.net/pxXSiLhFgQXJhYBfV5iAPH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><strong>How to do it:</strong></p><ul><li>Stand with your feet shoulder-width apart and your hands behind your head.</li><li>Shift your weight onto your left foot.</li><li>Lift your right knee while bringing your right elbow down toward it.</li><li>Focus on crunching through your side rather than bending forward.</li><li>Slowly return to the starting position.</li><li>Repeat all reps on one side before switching, or alternate sides continuously.</li><li>Perform three to four sets of 10 to 15 reps per side.</li><li>Rest for 45 to 60 seconds between sets.</li></ul><h3 class="article-body__section" id="section-3-woodchoppers"><span>3. Woodchoppers</span></h3><p>Woodchoppers train rotational strength and force your core to resist momentum as you move side to side. I particularly noticed this exercise waking up muscles around my mid-back and obliques that traditional crunches rarely touch. “Woodchoppers help develop rotational strength and target the obliques,” says Watkins. They also helped force my core to resist momentum as I moved from side to side. I particularly noticed this exercise waking up muscles around my mid-back and <a href="https://www.tomsguide.com/wellness/fitness/im-a-personal-trainer-these-are-the-4-oblique-exercises-i-do-to-build-a-stronger-core">obliques</a> that traditional crunches rarely touch.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="usZ2RuudEVYn6EoZKffyuR" name="woodchop weighted.jpg" alt="an illo of a man doing a weighted woodchop" src="https://cdn.mos.cms.futurecdn.net/usZ2RuudEVYn6EoZKffyuR.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><strong>How to do it:</strong></p><ul><li>Stand with your feet slightly wider than hip-width apart.</li><li>Clasp your hands together in front of your chest.</li><li>Rotate your torso and bring your hands toward one hip.</li><li>In one controlled motion, sweep your arms diagonally upward across your body.</li><li>Allow your hips and torso to rotate naturally.</li><li>Slowly return to the starting position without using momentum.</li><li>Complete three to four sets of 10 to 12 reps per side.</li><li>Rest for 45 to 60 seconds between sets.</li></ul><h3 class="article-body__section" id="section-4-standing-marches-with-overhead-reach"><span>4. Standing marches with overhead reach</span></h3><p>This movement felt surprisingly challenging because it forced me to keep <a href="https://www.tomsguide.com/wellness/fitness/ive-been-doing-this-5-minute-posture-reset-routine-every-day-for-a-week-and-its-changing-how-i-sit-stand-and-feel">good posture</a> while coordinating my upper and lower body. Reaching overhead while marching exposed how tight my shoulders and upper back actually are from <a href="https://www.tomsguide.com/wellness/fitness/sit-at-a-desk-all-day-these-are-the-6-best-exercises-you-can-do-to-improve-your-posture">sitting at a desk all day</a>. By day five, I noticed I was naturally standing taller throughout the day, especially while walking.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:960px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="t4bKTnskNdjdXiqXcgKxbN" name="Dumbbell-March" alt="Trainer Kirra Mitlo doing dumbbell marches" src="https://cdn.mos.cms.futurecdn.net/t4bKTnskNdjdXiqXcgKxbN.gif" mos="" align="middle" fullscreen="" width="960" height="540" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Kirra Mitlo)</span></figcaption></figure><p><strong>How to do it:</strong></p><ul><li>Stand tall with your arms resting by your sides.</li><li>Raise your right knee toward hip height.</li><li>Simultaneously extend your left arm overhead.</li><li>Keep your ribs down and avoid arching your lower back.</li><li>Lower both limbs slowly and repeat on the opposite side.</li><li>Perform three to four sets of 10 to 15 reps per side.</li><li>Rest for 45 to 60 seconds between sets</li></ul><h3 class="article-body__section" id="section-5-standing-pallof-press"><span>5. Standing Pallof press</span></h3><p>This was by far the hardest exercise in the routine, and the one that most clearly felt like “real-world” core training. The resistance band constantly tried to pull my torso sideways, forcing my abs, obliques, and lower back muscles to resist rotation. After seven days, I noticed better awareness of my posture while sitting and standing, especially around my shoulders and ribcage positioning.</p><p>“Exercises that involve resisting rotation, maintaining balance, or controlling posture force the body to engage the abdominals, obliques, and lower back muscles together, which helps reinforce better alignment over time,” explains Watkins.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7gx9BRGT4BfLxg7tiPqs6F" name="pallof press.jpg" alt="a photo of a man doing a pallof press" src="https://cdn.mos.cms.futurecdn.net/7gx9BRGT4BfLxg7tiPqs6F.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><strong>How to do it:</strong></p><ul><li>Attach a resistance band to a stable anchor at chest height.</li><li>Stand sideways to the anchor point with your feet shoulder-width apart.</li><li>Hold the band at chest height with both hands.</li><li>Flex your core and press the band straight outward.</li><li>Resist the urge to rotate toward the anchor.</li><li>Pause for one to two seconds with your arms extended.</li><li>Return the band slowly to your chest and repeat.</li><li>Perform 10 to 12 reps per side.</li><li>Rest for 45 to 60 seconds between sets.</li></ul><h2 id="what-happened-after-a-week">What happened after a week?</h2><p>Did this routine completely transform my posture in seven days? No. But I noticed more changes than I expected. The biggest difference was awareness. I became much more conscious of how often I slouch, lean into one hip, or lose tension through my midsection while sitting or standing. By the end of the week, standing taller started to feel more natural rather than forced.</p><p>I also noticed small improvements in my <a href="https://www.tomsguide.com/wellness/workouts/this-10-minute-standing-workout-is-perfect-for-improving-your-balance-and-stability-and-you-just-need-a-light-dumbbell-to-do-it">balance and stability</a>, particularly during single-leg exercises. And while this wasn’t a hypertrophy-focused workout, my core definitely felt worked and sore after each workout.</p><p>Will I completely replace traditional core training with standing exercises? No. But after seven days, I can confidently say they’re far more effective and challenging than I initially gave them credit for.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ No heavy weights, this 3-move dumbbell abs routine is perfect for beginners and limited mobility ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/no-heavy-weights-this-3-move-dumbbell-abs-routine-is-perfect-for-beginners-and-limited-mobility</link>
                                                                            <description>
                            <![CDATA[ This three-move dumbbell workout strengthens your core muscles and is perfect for beginners or those with limited mobility. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">kBgAim3yNr3PFoRcsWeXFV</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JWdii5TmH9NLYCqFzLMs9Q-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 01 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JWdii5TmH9NLYCqFzLMs9Q-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman against a grey backdrop in workout clothes holding two dumbbells in front of her during dumbbell workout]]></media:description>                                                            <media:text><![CDATA[Woman against a grey backdrop in workout clothes holding two dumbbells in front of her during dumbbell workout]]></media:text>
                                <media:title type="plain"><![CDATA[Woman against a grey backdrop in workout clothes holding two dumbbells in front of her during dumbbell workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JWdii5TmH9NLYCqFzLMs9Q-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It can be intimidating swiping through social media and catching a glance at all those challenging dumbbell workouts promising a snatched waist or torched abs. I know, because despite working in this industry, I feel the same way.</p><p>However, my goal as a trainer is to make people feel good as a priority, with looking good as an added benefit. For that reason, I like to encourage people from all walks of life to enjoy core workouts. </p><p>This routine is beginner-friendly and perfect for those with limited mobility, which means you won't spend this dumbbell abs workout getting up and down or moving around your mat loads. </p><p>You just need a light set of weights (you can go heavy if you wish), and I recommend the <a href="https://www.tomsguide.com/best-picks/best-adjustable-dumbbells">best adjustable dumbbells</a> so that you can adapt as you go. But that's optional. Equally, you can work with your bodyweight. </p><p>Check out the routine below, and it only has three moves.</p><h2 class="article-body__section" id="section-watch-3-move-dumbbell-abs"><span>Watch: 3-move dumbbell abs</span></h2><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/DY6QzNTkk0e/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>You can do more for less by getting clever with your programming — prioritizing the “bang for your buck” exercises while limiting the amount of time you spend moving around your mat.</p><p>For this abs workout, try to focus on the quality of your movements and engage your core muscles, rather than testing how heavy you can lift. As you move, think about drawing your navel in, directing your breath toward your stomach to help engage your diaphragm and bracing your stomach as if you're waiting for an impact. </p><p>I put together a quick <a href="https://www.tomsguide.com/wellness/workouts/stop-doing-100s-of-crunches-why-this-5-minute-bracing-routine-builds-a-stronger-core-than-sit-ups-ever-will">5-minute bracing routine</a> here if you need further guidance. </p><p>This is all about creating and holding tension in your core muscles, so move slowly and with control. </p><div class="product"><a data-dimension112="947122f5-7a54-47b1-b046-1a54b75330f7" data-action="Deal Block" data-label="The adjustable Bowflex dumbbells are rated top of the market, offering users 5 to 52.5 pounds of weight that adjust in 2.5-pound increments using an easy dial." data-dimension48="The adjustable Bowflex dumbbells are rated top of the market, offering users 5 to 52.5 pounds of weight that adjust in 2.5-pound increments using an easy dial." href="https://www.amazon.com/Bowflex-SelectTech-Adjustable-Dumbbells-Stowable/dp/B07WV2G5NC/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1503px;"><p class="vanilla-image-block" style="padding-top:56.09%;"><img id="T5WW3futanujQ2BxP2K2xj" name="bowflex dumbbells.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/T5WW3futanujQ2BxP2K2xj.jpg" mos="" align="middle" fullscreen="" width="1503" height="843" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The adjustable Bowflex dumbbells are rated top of the market, offering users 5 to 52.5 pounds of weight that adjust in 2.5-pound increments using an easy dial.</p></div><ul><li><strong>Round 1: </strong>45 on/ 15 off</li><li><strong>Round 2:</strong> 50 on/ 10 off</li><li><strong>Round 3</strong>: 20 on/10 off</li><li><strong>The moves: </strong>Curl-ups, Toe touches w/ leg raise, Pass-arounds</li></ul><p>Use either one or two weights, and take extra rest if you need it. During the first round, you'll work for 45 seconds, then take 15 seconds of rest, completing all three moves; on the second round, complete 50 seconds of work, then rest for 10; the third round is 20 on and 10 off for all three exercises, then you can repeat from the top if you have time. </p><p>I strongly advise speaking with a personal trainer or medical professional if you are returning from injury, are working with a health condition, or are pregnant or post-natal.</p><h3 class="article-body__section" id="section-the-moves"><span>The moves</span></h3><p><u><strong>The curl-up </strong></u></p><p>Roll-ups work the spine as you use your core muscles to lift your shoulder blades and peel your upper back away from the mat, then lower again. This can improve spinal mobility. If you spend a lot of time sitting behind a desk, this is a great exercise to try.</p><p>Your deep transverse abdominis and internal obliques help you scoop up and protect your lower back. Unlike sit-ups, the eccentric contraction that happens as you lower down will help build strength and control.</p><p><u><strong>Toe touches with leg raise</strong></u></p><p>Toe touches are low-impact; your lower back stays planted on the mat as you reach your weight toward your toes. You can bend your knees if you have tight hamstrings, but keeping your legs straight will help stretch these muscles. </p><p>Leg raises stretch the hip flexors and work the deep core (internal obliques and transverse abdominis) as well as the more superficial abs (to prevent your back arching) and the external obliques. Together, these muscles use isometric contraction to stabilize the body and prevent any twisting, rotation or swaying. You'll also feel this in your quads and hamstrings.</p><p>To make the exercise more challenging, try lifting and lowering both legs at the same time, putting more tension on your core as you press your lower back down.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3Gsyyhr99NgbmTHaTfpxrg" name="vertical leg crunch .jpg" alt="a photo of a woman doing vertical leg crunches" src="https://cdn.mos.cms.futurecdn.net/3Gsyyhr99NgbmTHaTfpxrg.jpg" mos="" align="middle" fullscreen="" width="2121" height="1193" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty/Studio Grand Web)</span></figcaption></figure><p><u><strong>Pass-arounds</strong></u></p><p>Finally, you'll crunch as you pass a dumbbell behind your legs in a circle, changing direction as you go. Try to keep your gaze neutral, looking ahead or slightly toward the ceiling, depending on what feels more comfortable. </p><p>Focus on squeezing your stomach to keep tension in your midsection as you pass the weight; your arms are secondary to this motion, and most of the work should be happening in your core.</p><p>To make this exercise more challenging, see if you can extend your legs and test hamstring flexibility; the higher your legs, the easier the exercise; the lower to the ground, the harder. </p><ul><li><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></li></ul><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom’s Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/fitness/build-a-stronger-core-in-just-30-minutes-with-this-8-move-bodyweight-abs-workout" target="_blank">Build a stronger core in just 30 minutes with this 8-move bodyweight abs workout</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/i-walked-3-000-steps-with-the-fitbit-air-vs-garmin-forerunner-70-and-im-seriously-amazed-by-the-results" target="_blank">I walked 3,000 steps with the Fitbit Air vs Garmin Forerunner 70 — and I’m seriously amazed by the results</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-found-a-stretch-that-feels-better-than-pigeon-pose-for-releasing-tight-hips-and-glutes-and-its-a-game-changer-for-me" target="_blank">I found a stretch that feels better than pigeon pose for releasing tight hips and glutes, and it's a game-changer for me</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Over 60? Start doing these 4 resistance band exercises to protect your hips ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/over-60-start-doing-these-4-resistance-band-exercises-to-protect-your-hips</link>
                                                                            <description>
                            <![CDATA[ Strengthen your hips with a resistance band and these moves ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">V9CHPaXNbD2hAvvbtti64n</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sG9JdEqxJVhetSvted2QST-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 31 May 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jen@jenrizzutofitness.com (Jennifer Rizzuto) ]]></author>                    <dc:creator><![CDATA[ Jennifer Rizzuto ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/V3yeuQZGZePvWRoSmHyxp8.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/sG9JdEqxJVhetSvted2QST-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a senior woman doing exercise holding a resistance band]]></media:description>                                                            <media:text><![CDATA[a photo of a senior woman doing exercise holding a resistance band]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a senior woman doing exercise holding a resistance band]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sG9JdEqxJVhetSvted2QST-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Your hips have a lot of responsibilities, from helping you walk, run, and climb to keeping your body stable and balanced during movement.</p><p>As we get older, our hips become especially vulnerable to injury or even worse, fracture. According to <a href="https://www.cdc.gov/falls/prevention/index.html" target="_blank" rel="nofollow"><u>the CDC</u></a>, there are an estimated 300,000 hip fracture-related hospitalizations each year, with senior adults who’ve experienced serious falls making up a majority of those cases.</p><p>Strengthening your hips should be a main focus for any fitness regimen, but especially if you’re over 60. As a certified personal trainer who works with a lot of seniors, I recommend these 4 <a href="https://www.tomsguide.com/best-picks/best-resistance-bands"><u>resistance band</u></a> exercises that target the glutes, hip abductors, hip adductors, and other important lower body muscles. They’re not only a mainstay in my clients’ routines, but my own as well. </p><h2 id="how-to-do-the-4-resistance-band-hip-exercises">How to do the 4 resistance band hip exercises</h2><p>These exercises are appropriate for most fitness levels and abilities, but you should always get clearance from your doctor before trying any new activity. Beginners should consider meeting with a certified personal trainer to ensure correct exercise form and execution. A trainer can also provide modifications, progressions, or alternative exercises if necessary.</p><p>You’ll need a moderately-heavy looped resistance band, a <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a>, and a little bit of space to move for this workout. If you have balance issues, you may also want a chair nearby. </p><p>Start by doing 1-2 sets of 10-12 reps for each exercise. If you’re unable to complete at least 10 reps before needing to rest, choose a lighter resistance band. If you can perform 12 reps without feeling fatigued, choose a heavier resistance band.</p><p>After a few weeks, you can add a set and increase your reps to 15. You may also choose to work with a heavier resistance band as you build strength. Aim to complete this workout three times per week, either on its own or as a part of a more comprehensive lower-body routine. </p><p>The exercises are:</p><h3 class="article-body__section" id="section-1-banded-clamshells"><span>1. Banded clamshells</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/InAOx0qA9EE" allowfullscreen></iframe></div></div><ul><li>Place a looped resistance band around your legs, slightly above the knee.</li><li>Lie on a yoga mat on your right side. If you’re unable to get onto the floor, lie on your bed or couch instead.</li><li>Bend your knees and bring them in front of you, aligning your heels with your tailbone.</li><li>Engage your core.</li><li>Rotate your left knee towards the ceiling, keeping your feet stacked on top of each other.</li><li>Pause briefly.</li><li>Lower your left knee back to the starting position.</li><li>Continue for 10-15 reps, then repeat on the other side.</li></ul><h3 class="article-body__section" id="section-2-banded-lateral-walks"><span>2. Banded lateral walks</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/M5uxEQH5BUM" allowfullscreen></iframe></div></div><ul><li>Place a looped resistance band around your ankles.</li><li>Stand tall and engage your core.</li><li>Step your left foot to the left, keeping your toes pointed forward.</li><li>Follow with your right foot.</li><li>Continue stepping to your left for 10-15 reps (or until you run out of room), then repeat in the other direction, stepping your right foot to the right and following with your left foot.</li></ul><h3 class="article-body__section" id="section-3-banded-glute-kickbacks"><span>3. Banded glute kickbacks</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/pdP0uJXvc44" allowfullscreen></iframe></div></div><ul><li>Place a looped resistance band around your ankles.</li><li>If you have balance issues, place your hands on the back of a chair or against the wall for additional support.</li><li>Stand tall and engage your core.</li><li>Squeeze your glutes and kick your left heel behind you.</li><li>Pause briefly.</li><li>Bring your left foot back to the starting position.</li><li>Continue for 10-15 reps, then repeat on the right side.</li></ul><h3 class="article-body__section" id="section-4-banded-squats"><span>4. Banded squats</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/KXWyWQ2lSCM" allowfullscreen></iframe></div></div><ul><li>Place a looped resistance band around your legs, slightly above the ankle.</li><li>Stand tall and engage your core.</li><li>Press your knees against the band to create tension.</li><li>Hinge your hips behind you, as if you were about to sit down.</li><li>Bend your knees and lower your tailbone towards the floor.</li><li>Once you’ve reached the end of your range, stand back up.</li><li>Continue for 10-15 reps.</li><li>If you have any mobility issues or knee injuries, place a chair behind you, sit all the way down, then stand back up again.</li></ul><h2 id="benefits-of-the-resistance-band-exercises">Benefits of the resistance band exercises</h2><p>These exercises effectively target the glutes and hip abductors – muscles that are responsible for stabilizing the pelvis and facilitating lower body movement. Everyday activities like walking, running, climbing stairs, and getting up from a seated position are easier when these muscles are strong and conditioned.</p><p>The glutes and hip abductors also play a huge role in overall balance. Since serious falls often result in hip fractures, having strong glutes and hip abductors can safeguard your full body stability and lower your risk for injury. </p><p>The banded squat exercise targets the quadriceps, hamstrings, and hip adductors as well. The squat is a functional movement that mimics getting up from a seated position, and the use of a resistance band forces your hip abductors to engage and keep the knees in a neutral position. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I train my 72-year-old dad, and here's the one move he swears by for building his functional core strength and mobile hips  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-train-my-72-year-old-dad-and-heres-the-one-move-he-swears-by-for-building-his-functional-core-strength-and-mobile-hips</link>
                                                                            <description>
                            <![CDATA[ Improve mobility and train your core to be functional using this one move from a personal trainer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xoqwALthXuG4fDhESxsc6a</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5MF4hLkCejuc5ccmGhP3U7-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 31 May 2026 04:15:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5MF4hLkCejuc5ccmGhP3U7-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a senior man going to workout ]]></media:description>                                                            <media:text><![CDATA[a senior man going to workout ]]></media:text>
                                <media:title type="plain"><![CDATA[a senior man going to workout ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5MF4hLkCejuc5ccmGhP3U7-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I've been training my dad for about six years, and amongst the grumbles I get for "going too hard on him," I have watched his balance, strength and mobility transform in that time.</p><p>There are some <a href="https://www.tomsguide.com/wellness/workouts/my-dad-is-72-and-i-still-train-him-like-a-30-year-old-using-these-5-strength-exercises-for-longevity-muscle-and-strength">essential strength exercises </a>I add to his routine (in various forms) regularly, but we often work on his mobility twice a week. We try to stay as low on equipment as we can, but for the exercise I'm sharing with you, you don't need anything except a <a href="https://www.tomsguide.com/how-to/best-resistance-band-workouts">resistance band</a>, but even that's optional.</p><p>As you get better at this exercise, you can adapt the load, reps and sets to suit your needs. If you’re ready to get started, check out one of my go-to strengthening mobility exercises below, plus the many benefits for your body.</p><h3 class="article-body__section" id="section-how-to-do-the-good-morning-squat-combo"><span>How to do the good morning squat combo</span></h3><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/DYzmgjNE2r8/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>The combo move is a <a href="https://www.tomsguide.com/wellness/fitness/i-did-weighted-prisoner-squats-every-day-for-one-week-and-this-is-what-happened-to-my-body">prisoner squat</a> combined with a <a href="https://www.tomsguide.com/news/i-did-30-good-mornings-every-day-for-a-week-heres-what-happened-to-my-body">good morning</a>. A prisoner squat is simply a squat performed with your hands behind your head. A good morning is a hip hinge exercise that involves leaning forward and pushing your butt back.</p><p>You can move from the good morning to the bottom of the squat, then stand, or perform the squat first, then move to the bottom of the good morning and stand. </p><p><strong>Here's how:</strong></p><ul><li>Stand tall with your feet slightly wider than shoulder-width apart</li><li>Place your hands behind your head and draw your elbows back</li><li>Engage your core muscles by bracing your stomach</li><li>Sit your hips back and lower into a squat. Your depth will depend on your overall mobility, but aim for your thighs to sit parallel to the ground</li><li>At the bottom of the squat, tilt your chest forward, lift your butt and straighten your legs slightly, mimicking the bottom of a good morning; you should feel a stretch down the backs of your legs</li><li>Lift your chest to stand, maintaining a soft bend in your knees. Squeeze your glutes at the top</li></ul><p><strong>Try this in reverse by:</strong></p><ul><li>Softly bending your knees and pushing your butt back as you lower your chest toward the ground. Stop when your chest is parallel to the ground</li><li>Sit your butt down and lift your chest, keeping your hands behind your head and elbows drawn back</li><li>Rise to stand and squeeze your glutes at the top.</li></ul><h3 class="article-body__section" id="section-benefits-of-this-exercise"><span>Benefits of this exercise</span></h3><p>Prisoner squats engage your upper body, test thoracic mobility (using the arm position) and improve range of motion in your hips, knees and ankles as you try to remain upright while you squat. If you know you lean forward during squats, this signals a lack of mobility, and so prisoner squats are essential to practice.</p><p>The good morning exercise targets and strengthens the muscles along the posterior chain, including your back, glutes and hamstrings, while the squat primarily targets your hips, glutes, quads, hamstrings and core for stability. </p><p>The most challenging part of this exercise is the transition from either the bottom of the squat to the good morning or vice versa. This will really help you work out how mobile you are in your spine, hips, knees and ankles. </p><div><blockquote><p>This will really help you work out how mobile you are in your spine, hips, knees and ankles. </p></blockquote></div><p>If you experience limited mobility in your hips, knees, ankles, or spine, go easy and take this exercise slowly. You could progress by adding weight to your upper back, a band above your knees, or slowing the exercise down more. </p><p>You could regress this exercise by adapting the depth of your exercises, reducing sets, or trying fewer reps. You don't need to use load or bands if you don't want to. If you experience pain, or you're unsure if this exercise is for you due to pregnancy, a health condition, illness, or injury, I recommend seeking medical advice first.</p><h3 class="article-body__section" id="section-common-mistakes"><span>Common mistakes</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="poPmEfnicHU9Ac6LMFkceD" name="prisoner squat.GettyImages-1454997029.jpg" alt="Man doing prisoner squat exercise near the water" src="https://cdn.mos.cms.futurecdn.net/poPmEfnicHU9Ac6LMFkceD.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images)</span></figcaption></figure><p>I recommend starting with bodyweight or light weights; I get my dad to hold a weight plate with both hands, but we have been doing this exercise a long time. You can also wrap a band above your knees and push against it with your legs.</p><p>Try to sink your weight into your heels and spread weight to your little and big toes; lift your chest and lower your butt as far as you can. </p><p>I commonly notice the elbows drawing forward (usually upper-body mobility-driven), heels raising (thoracic, hip, or ankle-related), knees caving in (often lower-joint-related), backs rounding, or a lack of squat depth. </p><p>Mobility can be deceiving; just because your ankles feel tight (and that might be the culprit), that doesn't mean there aren't imbalances or stability issues happening elsewhere, so try to perform this exercise in the mirror or record yourself and notice what is coming up for you.</p><p>Try to keep your spine straight and your shoulders pulled back and down, with your core switched and locked on. Imagine bracing for an impact and drawing your breath downward as you move. No holding your breath, as this increases blood pressure.</p><p>Over time, see if you can make small improvements, and let us know how you get on or what doesn't work for you.</p><ul><li><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></li></ul><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/i-made-this-simple-tweak-to-my-ab-crunches-and-immediately-experienced-less-back-pain-and-felt-a-huge-difference-in-my-midsection" target="_blank">Forget sit-ups — this exercise targets your deep core and is great for beginners, seniors, or anyone with tight hip flexors</a></li><li><a href="https://www.tomsguide.com/features/5-clever-ways-to-build-muscle-without-lifting-heavy" target="_blank">The 5 best ways to build muscle without lifting heavier weights</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-train-clients-over-60-and-this-is-one-exercise-i-use-to-build-lower-body-mobility-strength-and-stability" target="_blank">I train clients over 60, and this is one exercise I use to build lower-body mobility, strength and stability</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Do these 6 chair-based exercises to improve mobility and stability after 60 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/do-these-6-chair-based-exercises-to-improve-mobility-and-stability-after-60</link>
                                                                            <description>
                            <![CDATA[ Build strength, improve balance, and move more confidently with these simple chair-supported exercises ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">rdkZGQss9SrY76JfGc8J6H</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Ss3Tp5LUbhaWrkHfcqVgck-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 30 May 2026 08:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ Adam Meyer ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XNz6B37KjitwagZsPjswYi.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Ss3Tp5LUbhaWrkHfcqVgck-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing squats using a chair]]></media:description>                                                            <media:text><![CDATA[a woman doing squats using a chair]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing squats using a chair]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Ss3Tp5LUbhaWrkHfcqVgck-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It’s no secret that <a href="https://www.nia.nih.gov/news/maintaining-mobility-and-preventing-disability-are-key-living-independently-we-age"><u>mobility declines with age</u></a>. One year you’re hopping off the floor without thinking about it; the next, your knees feel stiff after sitting too long, <a href="https://www.tomsguide.com/wellness/workouts/over-70-now-is-the-time-to-keep-your-balance-in-check-here-are-the-top-3-exercises-to-help-you-do-it"><u>your balance</u></a> feels less reliable, and climbing stairs suddenly requires more concentration than it used to.</p><p>That’s exactly why chair-based exercises have become popular among physical therapists, trainers, and older adults. But despite the name, chair workouts can be surprisingly effective and definitely don’t mean “taking it easy” just because you’re sitting down.</p><p>“As we age, factors such as reduced muscle mass and joint stiffness can increase the risk of falls and make traditional exercise feel intimidating,” explains James Bickerstaff, CPT, a personal trainer at <a href="https://www.origym.co.uk/blog/author/jbickerstaff/" target="_blank" rel="nofollow"><u>OriGym</u></a>. “Chair-based exercises provide additional support and stability while still allowing the body to move safely through a full range of motion.”</p><p>To get the most out of these six <a href="https://www.tomsguide.com/wellness/workouts/forget-long-walks-these-6-seated-exercises-build-more-functional-strength-after-60"><u>seated exercises</u></a>, Bickerstaff recommends performing them three to five times per week and staying consistent. “Regular movement helps maintain joint mobility, muscle strength, and coordination, all of which benefit overall mobility and help reduce fall risk,” he says.</p><p>Here are six chair-based exercises designed to improve mobility and stability after 60.</p><h3 class="article-body__section" id="section-1-seated-marches"><span>1. Seated marches</span></h3><p>Seated marches will challenge your coordination, hip mobility, and core stability all at once. Seated marches <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5909000/" target="_blank" rel="nofollow">mimic the mechanics of walking</a> while reinforcing posture and controlled movement, making them particularly helpful for older adults who feel stiff or unstable during daily activities.</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/uoRVJBDEX60" allowfullscreen></iframe></div></div><p><strong>How to do it:</strong></p><ul><li>Sit toward the front edge of a sturdy chair with your feet flat on the floor.</li><li>Sit tall with your shoulders relaxed and your core engaged.</li><li>Slowly lift your right knee toward your chest as high as it feels comfortable.</li><li>Lower your foot back down with control.</li><li>Repeat on the opposite side in a smooth marching motion.</li><li>Continue alternating sides while maintaining upright posture.</li><li>Perform 2 to 3 sets of 10 to 12 reps per leg.</li><li>Rest for 30 tp 45 seconds between sets.</li></ul><h3 class="article-body__section" id="section-2-sit-to-stands"><span>2. Sit-to-stands</span></h3><p>Sit-to-stands are one of the <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4395748/"><u>most functional exercises</u></a> you can do as you age because they directly train the movement of standing up from a <a href="https://www.tomsguide.com/wellness/workouts/no-squats-i-just-tried-this-8-minute-chair-workout-and-its-perfect-for-seniors-beginners-and-anyone-looking-to-build-strength-without-impact"><u>chair</u></a>, bed, or toilet on your own. The movement strengthens your quads, glutes, hips, and core while improving lower-body control and balance.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Bo5CcPvgMmoDY8PLN4wDHU" name="chair squat" alt="sit to stand squat" src="https://cdn.mos.cms.futurecdn.net/Bo5CcPvgMmoDY8PLN4wDHU.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p><strong>How to do it:</strong></p><ul><li>Sit upright in a sturdy chair with your feet hip-width apart.</li><li>Position your feet slightly underneath your knees.</li><li>Lean forward slightly while keeping your chest lifted.</li><li>Press through your heels and slowly stand up without using your hands if possible.</li><li>Fully straighten your hips at the top of the movement.</li><li>Slowly lower yourself back down with control rather than dropping into the chair.</li><li>Complete 2 to 3 sets of 8 to 10 reps.</li><li>Rest for 30 to 45 seconds between sets.</li></ul><h3 class="article-body__section" id="section-3-seated-leg-extensions"><span>3. Seated leg extensions</span></h3><p>This movement targets your quads, which are essential for walking, <a href="https://www.tomsguide.com/wellness/fitness/you-just-need-5-exercises-and-a-staircase-to-strengthen-your-legs-and-core-and-it-only-takes-30-minutes"><u>climbing stairs</u></a>, and stabilizing the knees. Strengthening your quads can <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3718434/" target="_blank" rel="nofollow"><u>improve mobility</u></a> and make everyday movement feel safer and more controlled.</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/TLkzsTR6rMY" allowfullscreen></iframe></div></div><p><strong>How to do it:</strong></p><ul><li>Sit upright in your chair with both feet flat on the floor.</li><li>Flex your core and keep your shoulders relaxed.</li><li>Slowly extend your right leg until it’s parallel with the floor.</li><li>Flex your foot so your toes point upward.</li><li>Pause for one to two seconds at the top of the movement while squeezing your thigh muscles.</li><li>Lower your leg back down slowly and with control.</li><li>Repeat on the opposite side.</li><li>Aim for 2 to 3 sets of 10 to 12 reps per leg.</li><li>Rest for 30 to 45 seconds between sets.</li></ul><h3 class="article-body__section" id="section-4-heel-to-toe-raises"><span>4. Heel-to-toe raises</span></h3><p>Your ankles and lower legs are crucial for maintaining balance, stability, and walking mechanics as you age. Heel-to-toe raises help <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC9509092/" target="_blank" rel="nofollow"><u>improve ankle mobility</u></a> and strengthen your calves and muscles around your shins, which are essential for stability and reducing fall risk.</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/gY5yY4MB9wE" allowfullscreen></iframe></div></div><p><strong>How to do it:</strong></p><ul><li>Sit tall in your chair with both feet flat on the floor.</li><li>Keep your toes planted and slowly raise your heels off the floor.</li><li>Pause for one to two seconds at the top of the movement.</li><li>Lower your heels back down slowly.</li><li>Lift your toes while keeping your heels grounded.</li><li>Pause again before lowering your toes back down.</li><li>Continue alternating between heel raises and toe raises in a slow, controlled rhythm.</li><li>Do 2 to 3 sets of 12 to 15 reps.</li><li>Rest for 30 to 45 seconds between sets.</li></ul><h3 class="article-body__section" id="section-5-seated-torso-rotations"><span>5. Seated torso rotations</span></h3><p><a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5942425/" target="_blank" rel="nofollow"><u>Research</u></a> shows that spinal mobility tends to decline with age, especially for people who spend long periods sitting. Seated torso rotations help boost rotational mobility through your spine and core while <a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-trust-me-this-one-move-opens-your-chest-and-improves-your-posture-better-than-stretching"><u>improving your posture</u></a>.</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/Hhy81vzwVNw" allowfullscreen></iframe></div></div><p><strong>How to do it:</strong></p><ul><li>Sit upright near the front of your chair.</li><li>Cross your arms over your chest or place your hands lightly on your shoulders.</li><li>Engage your core and keep your hips facing forward.</li><li>Slowly rotate your upper body to the right as far as feels comfortable.</li><li>Pause for one to two seconds while maintaining upright posture.</li><li>Return slowly to the centre position.</li><li>Repeat on the opposite side.</li><li>Perform 2 to 3 sets of 8 to 10 reps per side.</li><li>Rest for 30 to 45 seconds between sets.</li></ul><h3 class="article-body__section" id="section-6-single-leg-holds-using-chair-support"><span>6. Single-leg holds using chair support</span></h3><p>Balance is one of the biggest predictors of <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC8855720/" target="_blank" rel="nofollow"><u>fall risk as we age</u></a>, and single-leg exercises are one of the most effective ways to improve it. This movement strengthens the stabilizing muscles around your ankles, hips, and core.</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/gMcuj0VStxU" allowfullscreen></iframe></div></div><p><strong>How to do it:</strong></p><ul><li>Stand behind a sturdy chair and hold the backrest for support.</li><li>Stand tall with your feet hip-width apart.</li><li>Shift your weight into your left foot.</li><li>Slowly lift your right foot slightly off the floor.</li><li>Keep your torso upright and avoid leaning too far to one side.</li><li>Hold the position for 15 to 30 seconds while breathing steadily through your nose.</li><li>Lower your foot and repeat on the opposite side.</li><li>Complete 2 to 3 sets per leg.</li><li>Rest for 30 to 45 seconds between sets.</li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ You don't need a gym membership to unlock stiff joints — if you've been sitting for more than 3 hours, your spine needs this exercise ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/fitness/you-dont-need-a-gym-membership-to-unlock-stiff-joints-if-youve-been-sitting-for-more-than-3-hours-your-spine-needs-this-exercise</link>
                                                                            <description>
                            <![CDATA[ Unlock your spine and hips after a long day of sitting at your desk with the reverse supine twist. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7QMbLHiV6gZdKSVAYRixTT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qoWnzphLFqVy9p5c7KYykg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 30 May 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Fitness]]></category>
                                                    <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qoWnzphLFqVy9p5c7KYykg-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman wearing gym kit holding her back from sciatic nerve pain ]]></media:description>                                                            <media:text><![CDATA[a photo of a woman wearing gym kit holding her back from sciatic nerve pain ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman wearing gym kit holding her back from sciatic nerve pain ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qoWnzphLFqVy9p5c7KYykg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The supine twist is a popular exercise for relieving tension in your spine and the muscles in your back. It involves lying on your back, drawing your knees toward your chest, then slowly, and with control, sweeping your legs to one side as you send your gaze in the opposite direction.</p><p>For many, this move creates a gentle rinsing motion through the torso, and people credit the stretch with improving symptoms of sciatica. But, personally, I have never found a deep stretch from it. Until now.</p><p>Enter the reverse supine twist. This take on the standard twist allows you to enter the stretch from your stomach — essentially a prone twist, but you'll end up in a very similar, if not the same, position. </p><p>Here's how to do the reverse supine twist, the benefits, and a few tips for getting it right. One of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> is useful to have on hand, too. </p><h2 class="article-body__section" id="section-how-to-do-reverse-supine-twists"><span>How to do reverse supine twists</span></h2><p>I’m keen to fit in "energy resets" during the day, but I don't always want to walk, so I like to unstick my joints and release tension by rolling out my yoga mat and taking a few stretches and mobility exercises through their paces. This is one of my essential go-tos.</p><p>If you feel pain, stop. You could also try reducing your range of motion (how far you move into the stretch) or placing a block or cushion beneath your legs. If you have an injury, are returning to exercise, have a health condition, or are pregnant or post-partum, I strongly advise speaking with a medical professional first.</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/DY1HLVFjiSg/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><ul><li>Start on your stomach with your legs extended</li><li>Extend your right arm in front of you, palm down, then place your left arm beneath your body toward the right side of the room, palm facing up</li><li>Gently, and with control, sweep your right arm over to the left side of the room to create a twist through the upper body</li><li>Look over your right shoulder. Focus on pressing both shoulders into the mat, even if that means your right knee hovers away from the mat. You could place something beneath your right knee. If your right knee can reach the mat, hold it there for a deeper stretch</li><li>Hold and breathe for 15-30 seconds, then slowly release and repeat on the other side. Try to initiate this stretch from the upper body rather than your legs or lower back.</li></ul><h3 class="article-body__section" id="section-what-are-the-benefits"><span>What are the benefits?</span></h3><p>Supine twists create rotation through the torso, which can relieve low back pain and tension held in the muscles surrounding and supporting your spine, especially around the mid-back.</p><p>Whether you sit for long hours, carry lots of stress, or lift heavy weights regularly, you might find your posture takes a hit over the years, so while <a href="https://www.tomsguide.com/wellness/fitness/im-a-pilates-instructor-and-i-recommend-these-5-core-exercises-to-help-older-clients-build-strength-and-improve-posture">posture-strengthening exercises</a> are essential, so is relieving some of that pressure.</p><p>When your posture is sound, your joints are stacked, creating stability and reducing muscular effort. When your alignment is off, perhaps due to slouching or hunching over, your posural muscles (especially those in your back) become weak or overworked, creating tension or aches.</p><p>Proper posture practice and plenty of activity during the day can be helpful, along with resistance training and mobility exercises. The reverse supine twist can help many people reach a deeper stretch and better relief than approaching it from their backs, as you're initiating the twist with your upper body rather than swinging your legs to the side.</p><p>Give it a try and let us know if you find it helps; we'd love to know!</p><ul><li><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></li></ul><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/wellness/workouts/a-yoga-instructor-shares-the-perfect-5-move-micromovement-routine-to-prevent-prolonged-sitting-so-i-tried-it-for-myself" target="_blank">A yoga instructor shares the perfect 5-move 'micromovement' routine to prevent prolonged sitting, so I tried it for myself</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-train-clients-over-60-and-this-is-one-exercise-i-use-to-build-lower-body-mobility-strength-and-stability" target="_blank">I train clients over 60, and this is one exercise I use to build lower-body mobility, strength and stability</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/the-fitbit-app-is-officially-dead-but-dont-panic-its-replacement-is-even-better" target="_blank">The Fitbit app is officially dead — but don’t panic, its replacement is even better</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Over 60? These 3 mobility drills can improve your balance and reduce stiffness ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/over-60-these-3-mobility-drills-can-improve-your-balance-and-reduce-stiffness</link>
                                                                            <description>
                            <![CDATA[ Open up stiff joints with these moves, done standing and sitting ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">76TAYgNUjsvuNn4qf5nXUe</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5MF4hLkCejuc5ccmGhP3U7-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 30 May 2026 04:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jen@jenrizzutofitness.com (Jennifer Rizzuto) ]]></author>                    <dc:creator><![CDATA[ Jennifer Rizzuto ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/V3yeuQZGZePvWRoSmHyxp8.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5MF4hLkCejuc5ccmGhP3U7-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a senior man going to workout ]]></media:description>                                                            <media:text><![CDATA[a senior man going to workout ]]></media:text>
                                <media:title type="plain"><![CDATA[a senior man going to workout ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5MF4hLkCejuc5ccmGhP3U7-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Many of my personal training clients deal with tight muscles and restricted joints. Those issues aren’t limited to specific age groups, either — both younger and older adults can experience the impacts of less-than-optimal mobility. </p><p>There are lots of effective mobility drills that are done on a <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a>, but since plenty of my clients are over 60 and have trouble getting down to the floor, those moves are all off limits. Fortunately, there are other ways to open up tight spots.</p><p>The following 3 mobility exercises are fantastic for seniors. They’re done standing or sitting instead of lying down, they don’t require any equipment, and they can improve your overall balance and stability. Even if you’re under 60, these movements can help increase your range of motion and reduce aches and pains.</p><h2 id="how-to-do-the-3-mobility-drills">How to do the 3 mobility drills</h2><p>Be sure to clear any new activity with your medical team. While these exercises are appropriate for any fitness level, your doctor may recommend alternatives based on your specific health needs.</p><p>Consider meeting with a certified personal trainer for guidance on these exercises. A trainer can ensure you’re moving with correct form and provide modifications, if necessary.</p><p>The only thing you’ll need is a sturdy chair and a section of bare wall. </p><p>Start by doing these exercises for one set of 10 repetitions. Move slowly through your full range of motion. As your mobility improves, you can add a set of 10 reps. Do the exercises 2-3 times per week at first, gradually increasing to 5-7 times per week.</p><p>These exercises can be done on their own or as part of your workout warm-up. </p><p>Here’s how to do them:</p><h3 class="article-body__section" id="section-1-standing-hip-circles"><span>1. Standing hip circles</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/C4MDREc9ERg" allowfullscreen></iframe></div></div><ul><li>Stand tall with your feet hip-width apart.</li><li>Place your right hand on the wall for support.</li><li>Lift your left knee to a 90-degree angle in front of you.</li><li>Rotate your left knee out to your side, opening your hip joint.</li><li>Rotate your knee behind you.</li><li>Bring your left knee back to a 90-degree angle in front of you.</li><li>Reverse directions, bringing your left knee behind you, rotating it to your left side, and circling it to a 90-degree angle in front of you.</li><li>Continue for 10 reps in each direction, then repeat with the other leg.</li></ul><h3 class="article-body__section" id="section-2-seated-spinal-rotations"><span>2. Seated spinal rotations</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/_71vJV2fZng" allowfullscreen></iframe></div></div><ul><li>Sit upright on a chair.</li><li>Cross your arms and place your hands on your shoulders.</li><li>Rotate your torso to the left.</li><li>Pause briefly.</li><li>Slowly return to the starting position.</li><li>Rotate your torso to the right.</li><li>Pause briefly.</li><li>Slowly return to the starting position.</li><li>Continue alternating between the two positions for 10 reps on each side.</li></ul><h3 class="article-body__section" id="section-3-seated-cat-cow-stretch"><span>3. Seated cat/cow stretch</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/gJt3kS4navw" allowfullscreen></iframe></div></div><ul><li>Sit upright on a chair.</li><li>Relax your arms by your side.</li><li>Round your spine, aiming your chest towards your thighs.</li><li>Pause briefly.</li><li>Slowly lengthen the spine and return to the starting position.</li><li>Arch your spine, lifting your chest towards the ceiling.</li><li>Pause briefly.</li><li>Return to the starting position with control.</li><li>Continue alternating between the two positions for 10 reps.</li></ul><h2 id="benefits-of-the-3-mobility-drills">Benefits of the 3 mobility drills</h2><p>These movements target two commonly tight areas: your hips and back. While anyone at any age can suffer from restricted hip or spinal mobility, seniors are especially susceptible to these issues. Loss of bone density, joint degradation, and weakened muscles can all contribute to overall stiffness and pain.</p><p>Since many seniors can’t get down onto or up from the floor, certain exercises like the standard cat/cow stretch, prone hip rotations, and supine spinal rotations are ill-advised. The exercises in this routine are done with modified positioning so that those with mobility concerns or injuries can get the benefits of efficient and effective drills. </p><p>Better hip and spine mobility can lead to improved posture, balance, and stability. It can also help reduce perceived stiffness, inflammation, and pain.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The 'glute-isolator': Why I swapped heavy squats for this one targeted move ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/no-not-squats-this-move-is-my-secret-weapon-for-building-glute-size-and-strength</link>
                                                                            <description>
                            <![CDATA[ Whether you’re after a shapely backside or a super-strong lower body (or both), one of my favorite exercises to target the glutes is the single-leg glute bridge ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VgYKzM9zsWp7z5LdW7xezG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AdgehcXSdbfiyEzUsMrneN-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 27 May 2026 07:03:00 +0000</pubDate>                                                                                                                                <updated>Wed, 27 May 2026 12:04:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jen@jenrizzutofitness.com (Jennifer Rizzuto) ]]></author>                    <dc:creator><![CDATA[ Jennifer Rizzuto ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/V3yeuQZGZePvWRoSmHyxp8.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/AdgehcXSdbfiyEzUsMrneN-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing a single leg glute bridge ]]></media:description>                                                            <media:text><![CDATA[a woman doing a single leg glute bridge ]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing a single leg glute bridge ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AdgehcXSdbfiyEzUsMrneN-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Whether you’re after a shapely backside or a super-strong lower body (or both), one of my favorite exercises to target the glutes is the single-leg glute bridge. I give this exercise to nearly all of my personal training clients and do it regularly myself.</p><p>One of the reasons I love this exercise is because of its adaptability. Beginners who master the standard glute bridge can progress to the single-leg glute bridge quickly and easily, and advanced athletes can challenge themselves by adding <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells"><u>dumbbells</u></a> or r<a href="https://www.tomsguide.com/best-picks/best-resistance-bands"><u>esistance bands</u></a> to the movement. </p><p>Additionally, the single-leg glute bridge is incredibly effective in many rehab and corrective exercise programs. When I work with clients who have knee injuries, hip issues, or are recovering postpartum, the single-leg glute bridge functions as a safe, accessible way to strengthen important stabilizing muscles.</p><p>If you’ve got a <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a> handy, you can give single-leg glute bridges a try. Below I’ll cover how to do the exercise, its many benefits, and ways to modify and progress the movement. </p><h2 id="how-to-do-single-leg-glute-bridges">How to do single-leg glute bridges</h2><p>This exercise is doable for the majority of people, but you’ll still want to discuss it with your doctor first. They may recommend trying other exercises first, depending on your specific health concerns. </p><p>If you have the means, consider meeting with a certified personal trainer to learn how to do the single-leg glute bridge with correct form. </p><p>Start out with one set of 10 reps on each side. As you get stronger, you can gradually add sets and reps. Do single-leg glute bridges on their own, as a part of your lower body workout, or add them to your warm-ups. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qy4fDsgZNdiWujJjBGZA79" name="single leg glute bridge" alt="an illo of a woman doing a single leg glute bridge" src="https://cdn.mos.cms.futurecdn.net/Qy4fDsgZNdiWujJjBGZA79.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Here’s how to do them:</p><ul><li>Lie on your back with your knees bent and feet flat on the floor.</li><li>Engage your core muscles.</li><li>Lift your left foot off the ground, bringing your left knee to a tabletop position.</li><li>Squeeze your right glute, press your right foot into the floor, and lift your hips off of the mat.</li><li>Keep your hips square – don’t allow them to rotate to one side.</li><li>Lower your hips down to the mat with control.</li><li>Continue for 10 reps on each side, or until you reach muscle fatigue.</li></ul><h2 id="what-are-the-benefits-of-single-leg-glute-bridges">What are the benefits of single-leg glute bridges?</h2><p>Standard glute bridges, done with both feet on the floor while engaging the glute muscles on both sides, are one of the best exercises to strengthen your posterior chain.</p><p>However, like most exercises that are done bilaterally (or both sides at the same time), your stronger side can make up for strength deficits in your weaker side. You can be doing the exercise with correct form and a good mind-muscle connection, but it’s still common for one side to be working harder than the other.</p><p>The single-leg glute bridge takes all the benefits of the standard glute bridge and isolates the movement to one side. My clients are often shocked at how difficult this exercise can feel on one side versus the other. This signifies the muscle imbalances one can experience without ever realizing it. </p><p>By targeting the glutes and hamstrings independently, the muscles are forced to contract against gravity without “help” from the other side. This is not only incredibly beneficial for proper movement mechanics overall, but especially helpful when rehabilitating from injuries. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5818px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="ZBJJAPZezXyJ99YqgASym9" name="single leg glute bridge 2.jpg" alt="a photo of a woman doing a single leg glute bridge" src="https://cdn.mos.cms.futurecdn.net/ZBJJAPZezXyJ99YqgASym9.jpg" mos="" align="middle" fullscreen="" width="5818" height="3273" 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><h2 id="how-to-modify-the-single-leg-glute-bridge">How to modify the single-leg glute bridge</h2><p>Be sure you can properly execute a standard glute bridge before trying the single-leg version. I often find that my clients who have trouble with the movement haven’t fully mastered the standard glute bridge, so we go back to basics before progressing. </p><p>If your standard glute bridges feel easy but you’re still finding single-leg glute bridges too difficult, reduce your range of motion and only lift your hips slightly off the mat. As you build the necessary stability and strength, your range of motion will improve.</p><p>You can also do a <a href="https://youtu.be/4LQUPybxCnI?si=kPi2R2tmYgnvQJqQ"><u>marching glute bridge</u></a> instead. With both feet on the ground, lift your hips into the air and hold in that position. Then, lift one foot off the ground and pause briefly. Lower that foot back onto the mat, then lift your other foot off the mat and pause briefly. Continue alternating between your two sides for 10 reps on each side.  </p><h2 id="how-to-progress-the-single-leg-glute-bridge">How to progress the single-leg glute bridge</h2><p>If you’re able to do 15-20 reps without getting fatigued, it may be time to add a challenge to your single-leg glute bridges.</p><p>Increase your range of motion by <a href="https://youtu.be/I7Zwyzr8COk?si=gFQNeln5lNFiraye"><u>placing your feet on top of a raised surface</u></a>, like a bench or step. Elevated glute bridges require more stability, more strength, and more control to do properly. </p><p>You can also add resistance to your single-leg glute bridges by performing the exercise with a <a href="https://youtube.com/shorts/RNMIy5Q5XBY?si=2pLsDh0d3ZByR6DO"><u>dumbbell across your hips</u></a>. Be sure to keep your hips square and avoid excessive arching in your lower back. If you notice either of those things happening, use a lighter dumbbell or perform the exercise unweighted again. </p><p>Resistance bands can also add difficulty to single-leg glute bridges. You can focus on building stronger inner and outer thighs by looping a resistance band around your knee. <a href="https://youtube.com/shorts/ODIHYr6BMJs?si=1p0awRYird1-J4ES"><u>Pressing your knee out against the band</u></a> will target the hip abductors, while <a href="https://youtu.be/n1YEa4fRV7A?si=efv4GEwgWunhbEiQ"><u>pressing your knee in against the band</u></a> will target the hip adductors. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget sit-ups — this exercise targets your deep core and is great for beginners, seniors, or anyone with tight hip flexors ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-made-this-simple-tweak-to-my-ab-crunches-and-immediately-experienced-less-back-pain-and-felt-a-huge-difference-in-my-midsection</link>
                                                                            <description>
                            <![CDATA[ Here's why elevating your legs during crunches can make all the difference to your core ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vomV6EYZBJxcdwfdis3hCg</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FxRvGr5d426rTDmKVtibBW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 26 May 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 26 May 2026 12:11:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FxRvGr5d426rTDmKVtibBW-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing a crunch with her legs elevated]]></media:description>                                                            <media:text><![CDATA[a woman doing a crunch with her legs elevated]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing a crunch with her legs elevated]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FxRvGr5d426rTDmKVtibBW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If your back hurts during crunches and sit-ups, you’ve landed in the right place. I’ve run six marathons, I spend my days sitting down behind a desk, and I suffer from sciatica — protecting my lower back is essential whenever I work my abs. </p><p>Like most runners, I also have extremely tight hip flexors and often find they’ll take over during ab exercises, reducing the effectiveness of the move. Luckily, I’ve found the perfect crunch hack to ensure I’m getting the most out of this simple bodyweight move. Read on to find out more. </p><p>As a reminder, what works for me might not be right for you and your body. If you’re a complete beginner, you’re pregnant or postpartum, or you’re currently exercising with an injury, it’s always best to seek personalized advice from a qualified professional. </p><h2 id="what-are-elevated-crunches-and-how-do-you-do-them">What are elevated crunches and how do you do them?</h2><p>As you might have guessed, elevated crunches involve elevating your feet, either by placing your legs in a tabletop position and pressing them into a wall or using a bench. This changes the position of your lower body during the crunch dramatically, helping you keep your lower back pressed into the floor and reducing any strain on your spine. </p><p>You’ll also probably find your deep core works much harder during this variation, as there’s less likelihood that your hip flexor muscles will take over. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cau8ogCEMzY5wuAPgZrVQP" name="elevated crunch" alt="a man doing an elevated crunch" src="https://cdn.mos.cms.futurecdn.net/cau8ogCEMzY5wuAPgZrVQP.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Here’s how to do elevated crunches with good form: </p><ul><li>You’ll need something to elevate your legs onto. If you have no equipment to hand, you can always do the move near a wall and press your feet against the wall with your legs in a tabletop. Alternatively, use a chair, bench, or couch and rest your calves against the surface so your knees have a 90-degree bend.</li><li>Engage your core, thinking about sucking your belly button into your spine, or zipping your abs up and in, and squeezing your pelvic floor. There should be no gap between your lower back and the floor.</li><li>Place your hands lightly behind your head. Make sure they are just resting here and that you are not pulling on your neck.</li><li>Crunch your torso towards your legs, lifting your head, neck and shoulders off the floor. Keep your chin tucked and your gaze neutral to avoid putting any strain on your neck.</li><li>Hold for a few seconds at the top of the movement, squeezing your abs, then lower your upper body down to the floor.</li></ul><p>Once you’ve mastered this move, for a real challenge, do an elevated crunch without resting your legs on a wall or bench. Keep your legs at 90 degrees in the air to really work on deep core stability, or extend your legs toward the ceiling to increase the load on your lower abs. </p><h2 id="what-are-the-benefits-19">What are the benefits?</h2><p>As mentioned above, if you spend a lot of time sitting down, you probably have tight hip flexors, and if you have tight hip flexors, they’ll often take over during exercises like crunches, helping you to lift your torso without actually using your core. Elevating your legs stops your hip flexors from being able to do this, forcing the six-pack muscles, or rectus abdominis, to do most of the work. </p><p>You’re also far less likely to feel this variation of crunch in your lower back, as your pelvis is naturally in a posterior tilt, helping you to really flatten your lower back against the mat. This makes this crunch variation safer for anyone who has suffered from back pain, but as always, check with your doctor first. </p><p>Finally, your lower abs and deep transverse abdominis will also be getting more of a workout with the elevated crunch, as they are engaged and working to hold your legs in the air. Your deep core is responsible for stabilizing your body, protecting your spine from injury, and improving your posture. </p><p>This small tweak can help you get a lot more out of your crunches, so what are you waiting for? Elevate those legs and give this one a try. </p><ul><li><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></li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’m a personal trainer who works with seniors — these are the 3 lower body moves everyone should do before they turn 60 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-these-are-the-3-lower-body-moves-everyone-should-do-before-they-turn-60</link>
                                                                            <description>
                            <![CDATA[ One of the best things you can do for your future self is to focus on strength and stability now – before you hit your 60’s. Here are the lower-body exercises to prioritize. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">LrqtSfk4dAnpRkuzpxokRJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GzVCe4bGoVpYSF992r3w6j-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 25 May 2026 11:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jen@jenrizzutofitness.com (Jennifer Rizzuto) ]]></author>                    <dc:creator><![CDATA[ Jennifer Rizzuto ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/V3yeuQZGZePvWRoSmHyxp8.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GzVCe4bGoVpYSF992r3w6j-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images/Tom Werner]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a middle aged man working out ]]></media:description>                                                            <media:text><![CDATA[a photo of a middle aged man working out ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a middle aged man working out ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GzVCe4bGoVpYSF992r3w6j-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>One of the best things you can do for your future self is to focus on strength and stability now — before you hit your 60’s.</p><p>I’m a firm believer that it’s never too late to start exercising. But as a certified personal trainer with plenty of older clients, I find that those who started strength training in their 30’s, 40’s, or even 50’s often move better, have steadier balance, and experience less pain than those who began training later in life. </p><p>If you’ve yet to cross the “60” mark, grab a set of <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells"><u>dumbbells</u></a> and start doing these 3 lower-body exercises during your workouts. These compound movements target multiple muscle groups that are essential for everyday activities. For those over 60 already, practicing these moves can help you strengthen your lower body and maintain your independence as you age.     </p><h2 id="how-to-do-the-3-lower-body-exercises">How to do the 3 lower-body exercises</h2><p>Consult with your doctor before trying any new activity. If you’re a beginner, consider meeting with a certified personal trainer to learn proper exercise form. A trainer can also help modify or progress the exercises as needed for your fitness level. </p><p>You’ll need a set of moderately-heavy dumbbells and a <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a> for these exercises.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5871px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="36fZcmHsRnK3mkouyBNvE" name="shutterstock_2420354119" alt="a senior woman doing a glute bridge" src="https://cdn.mos.cms.futurecdn.net/36fZcmHsRnK3mkouyBNvE.jpg" mos="" align="middle" fullscreen="" width="5871" height="3303" 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>These 3 moves can be done as their own workout, or they can be added to an already-existing lower-body routine. Beginners should start by doing each exercise for 1-2 sets of 10-12 reps. As you build strength, add an additional 1-2 sets and increase your reps to 15. If you’re able to do 3-4 sets of 15 reps without feeling fatigued, try using heavier dumbbells or seeking guidance from a personal trainer on appropriate progressions.</p><p>This routine can be done 2-4 times per week, with at least one rest day in between each attempt. </p><p>The exercises are:</p><h3 class="article-body__section" id="section-1-weighted-glute-bridge"><span>1. Weighted glute bridge</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/cruqsnAyU6A" allowfullscreen></iframe></div></div><ul><li>Lie on your mat with your knees bent and feet flat on the floor.</li><li>Place a dumbbell across your hips.</li><li>Engage your abdominals.</li><li>Squeeze your glutes and lift your hips off the mat.</li><li>Pause briefly.</li><li>Lower your hips back to the mat.</li><li>Continue for 10-15 reps.</li></ul><h3 class="article-body__section" id="section-2-goblet-squat"><span>2. Goblet squat</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/W2U2gRsFJjE" allowfullscreen></iframe></div></div><ul><li>Stand tall with your feet hip-width apart.</li><li>Grab a dumbbell by the bell and hold it at chest level.</li><li>Engage your abdominals.</li><li>Hinge your hips behind you.</li><li>Bend your knees and lower your hips towards the floor.</li><li>Pause briefly.</li><li>Stand back up to the starting position.</li><li>Continue for 10-15 reps.</li></ul><h3 class="article-body__section" id="section-3-romanian-deadlift"><span>3. Romanian deadlift</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/plb5jEO4Unw" allowfullscreen></iframe></div></div><ul><li>Stand tall with your feet hip-width apart, holding a dumbbell in each hand.</li><li>Engage your abdominal muscles.</li><li>Hinge your hips behind you.</li><li>Bend your knees slightly as you continue driving your hips behind you, bringing your torso forward and letting the dumbbells drop towards the ground.</li><li>Squeeze your glutes, drive your hips forward, and stand tall.</li><li>Continue for 10-15 reps.</li></ul><h2 id="benefits-of-the-3-lower-body-exercises">Benefits of the 3 lower-body exercises</h2><p>These moves are all compound exercises, meaning they work multiple lower body muscle groups at once: the hamstrings, glutes, hip abductors, hip adductors, and quadriceps. Additionally, the goblet squat and Romanian deadlift target the shoulders, back, and deep core muscles. </p><p>As we age, our balance often worsens, our bone density and muscle mass can decrease, and everyday activities can become more difficult. The exercises in this workout strengthen muscles that help us walk, run, climb stairs, and lift heavy objects off the ground. These muscles also support our spine and pelvis, which helps us to maintain balance as we move.</p><p>Engaging in a strength training routine like this one has also been shown to preserve musculoskeletal health, according to <a href="https://www.cdc.gov/physical-activity-basics/adding-older-adults/what-counts.html" target="_blank" rel="nofollow"><u>the CDC</u></a>.  </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ A yoga instructor shares the perfect 5-move 'micromovement' routine to prevent prolonged sitting, so I tried it for myself ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/a-yoga-instructor-shares-the-perfect-5-move-micromovement-routine-to-prevent-prolonged-sitting-so-i-tried-it-for-myself</link>
                                                                            <description>
                            <![CDATA[ A yoga instructor shares her five essential exercises for a micromovement routine that breaks up sedentary time during the day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Y9nC7gWpTCAsfT3qqrwNPM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PpxWq5cXJsh7uP6DUniuoR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 25 May 2026 06:30:00 +0000</pubDate>                                                                                                                                                                                                                                <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.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>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PpxWq5cXJsh7uP6DUniuoR-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman doing a yoga neck stretch in a white, bright room]]></media:description>                                                            <media:text><![CDATA[Woman doing a yoga neck stretch in a white, bright room]]></media:text>
                                <media:title type="plain"><![CDATA[Woman doing a yoga neck stretch in a white, bright room]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PpxWq5cXJsh7uP6DUniuoR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you haven't heard of "micromovement" routines, they're a bit like <a href="https://www.tomsguide.com/wellness/fitness/i-tried-exercise-snacking-every-day-for-a-week-here-are-3-ways-it-changed-my-workouts">exercise snacking</a>, where you add chunks of movement into your day to break up sedentary time, especially prolonged sitting. </p><p>Melissa Leach, a yoga instructor for Yoga Go and strength and conditioning coach, says the solution to your sedentary time isn’t adding more workouts, but prioritizing micromovement breaks throughout the day. </p><p>According to <a href="https://yogago.welltech.com/age-of-inactivity-uk" target="_blank" rel="nofollow">new research from Yoga-Go</a>, Brits could add up to eight years to their biological age due to periods spent sitting, regardless of whether they exercise daily. If you want to break the pattern, Leach shares a beginner-friendly yoga-inspired routine that takes no time at all and only uses five moves. You can do it anywhere, and I tried it for myself. </p><p>Here are my thoughts.</p><h2 class="article-body__section" id="section-benefits-of-micromovement-routines"><span>Benefits of micromovement routines</span></h2><div><blockquote><p>Movement is what happens throughout the day, the decision to stand rather than sit, to go on a walk during your lunch break, or to break up a long stretch of stillness with small, deliberate bursts of activity.</p></blockquote></div><p>“Movement is what happens throughout the day, the decision to stand rather than sit, to go on a walk during your lunch break, or to break up a long stretch of stillness with small, deliberate bursts of activity," explains Leach.</p><p>“Exercise plays a separate and essential role, but one workout cannot undo a full day of sitting, just as standing every 30 minutes doesn’t replace structured cardiovascular or strength training. They work together; daily doses of movement for maintenance and structured exercise for protection.” </p><p>Based on analysis of peer-reviewed studies on sedentary behaviour and all-cause mortality, the findings of the research published on Yoga-Go suggest a single daily workout "may not offset the effects of sitting for 8-10+ hours a day."</p><p>And what I found alarming? An estimated 11 million people admit to sitting for three or more hours without moving at a time.</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/DYoyNfWDyAB/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Yoga-Go even did some of the math. Based on their<a href="https://yogago.welltech.com/age-of-inactivity-uk" target="_blank" rel="nofollow"> sedentary calculator</a>, they found that someone my age (35) exercising for roughly 30 to 45 minutes a day, but sitting for over eight hours a day, going more than 60 minutes without a break, could age up to eight years with a "sedentary age" of 43. </p><p>Rather than relying on a single workout, refocus your attention on consistent movement. This all adds up to helping you stay active and burn energy.</p><p>Enter the micromovement routine. This means adding short but impactful bouts of movement to your daily routine to help break up your sitting time. Yoga is a holistic form of movement that offers physical and mental benefits, and the movements below can help you relieve stress, combat sedentary time, and move your muscles and joints. </p><p>Below are some tips for getting started with good form, and Leach explains how to do each move step-by-step. Take your time moving in and out of the postures, and don’t forget to breathe — an essential part of any yoga practice. I also demonstrate the exercises I practiced in the video above.</p><h3 class="article-body__section" id="section-five-minute-micromovement-routine"><span>Five-minute micromovement routine</span></h3><p>By adding this routine regularly, you can improve circulation, support joint health, and reduce strain on the body. </p><p>Leach adds: “Ideally, you should move every 30 to 60 minutes, not to exercise but to interrupt stillness. Even small movements can have a meaningful impact over time. This routine is designed to gently wake up the joints, boost circulation, and reduce stiffness from prolonged sitting.” </p><h3 class="article-body__section" id="section-1-marching"><span>1. Marching</span></h3><p>“This exercise is great for gently increasing heart rate, improving hip mobility, all while activating the core and lower-body stabilizers.” </p><p><strong>Expert tip: </strong><em>“</em>Stay upright rather than leaning back. Focus on lifting your knees with control rather than with speed, and keep your core lightly engaged to avoid swaying side to side.” </p><ul><li>Stand tall with feet hip-width apart</li><li>Brace your core and keep your chest lifted</li><li>Lift one knee toward your chest, then lower it down</li><li>Alternate legs in a steady marching rhythm</li><li>Keep movements controlled and light on your feet</li><li><strong>Continue for 45–60 seconds.</strong></li></ul><h3 class="article-body__section" id="section-2-standing-cat-cow"><span>2. Standing cat-cow</span></h3><p>“Standing cat-cows improve spinal mobility, posture awareness, and reduce stiffness through gentle movement of the back.” </p><p><strong>Expert tip: </strong>“Move vertebrae by vertebrae through your spine rather than forcing a big bend. Keep the movement smooth and controlled, only going as deep as it remains comfortable.” </p><ul><li>Stand with feet hip-width apart and hands on thighs</li><li>Inhale and gently arch your back, lifting your chest and tailbone (cow position)</li><li>Exhale and round your spine, tucking your chin and pelvis (cat position)</li><li>Move slowly between the two positions</li><li><strong>Repeat for 45–60 seconds.</strong></li></ul><h3 class="article-body__section" id="section-3-pelvic-tilts"><span>3. Pelvic tilts</span></h3><p>“This exercise strengthens deep core muscles and improves control of the pelvis and lower back.” </p><p><strong>Expert tip: </strong>“Focus on small, controlled movements. This exercise isn’t about force. Avoid using your glutes too much and let your core do the work.” </p><ul><li>Lie on your back with knees bent and feet flat on the floor </li><li>Place your hands on your hips or lower abdomen</li><li>Gently flatten your lower back into the floor by tilting your pelvis upward</li><li>Hold briefly, then release back to neutral</li><li><strong>Repeat 10–15 times slowly over 45–60 seconds.</strong></li></ul><h3 class="article-body__section" id="section-4-neck-and-shoulder-rolls"><span>4. Neck and shoulder rolls</span></h3><p>“Rotations help release tension accumulated in the neck and shoulders, improving mobility and reducing stiffness from prolonged sitting.” </p><p><strong>Expert tip: </strong>“Keep your movements slow and gentle, never forcing the range of motion. If you feel any discomfort, simply reduce the size of the circles.” </p><ul><li>Stand tall with relaxed shoulders</li><li>Slowly drop your chin toward your chest</li><li>Gently roll or move your head in slow circles or side-to-side motions</li><li>Then shrug shoulders up, back, and down in slow circles</li><li><strong>Repeat continuously for 45–60 seconds.</strong></li></ul><h3 class="article-body__section" id="section-5-shoulder-blade-squeezes"><span>5. Shoulder blade squeezes</span></h3><p>“Shoulder blade squeezes strengthen the upper back muscles and help improve posture by counteracting rounded shoulders.”</p><p><strong>Expert tip: </strong>“Keep your shoulders relaxed and away from your ears, focus on trying to squeeze your shoulder blades together without lifting.” </p><ul><li>Stand with arms relaxed at your sides</li><li>Pull your shoulder blades back and slightly down as if pinching them together</li><li>Hold for 2–3 seconds</li><li>Release slowly and repeat in a steady rhythm for <strong>45–60 seconds.</strong></li></ul><p>Leach says, "This approach is far more effective than sitting for hours and trying to ‘undo’ the damage with a single workout later. A mobile movement plan like this one should prioritize consistency, with gentle progressions that build resilience over time.” </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><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/DWliw6KDFwm/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/fitness/is-walking-backward-good-for-you-we-asked-an-expert">Is walking backward good for you? We asked an expert</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-just-tried-puppy-yoga-for-the-first-time-heres-exactly-what-happened">I just did a puppy yoga class for the first time — here’s what happened</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/i-did-yoga-every-day-for-a-month-for-the-first-time-in-10-years-heres-what-happened-to-my-body">I did yoga every day for a month for the first time in 10 years — here's what happened to my body</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Over 40? This 10-minute physical therapist workout builds full-body strength with just 4 exercises ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/a-physical-therapist-wants-you-to-try-this-10-minute-full-body-workout-designed-for-women-over-40-that-builds-strength-and-stamina-using-just-4-exercises</link>
                                                                            <description>
                            <![CDATA[ Strength training is essential during all stages of life, but especially for women in their 40s, as hormones begin to shift during perimenopause and menopause. Here's a workout to try. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">RK7gfQCnZTNjAAuqztsiV8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8bpwMoMXdmi3VPqxQNfadU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 24 May 2026 05:45:00 +0000</pubDate>                                                                                                                                <updated>Sun, 24 May 2026 21:16:55 +0000</updated>
                                                                                                                                            <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                <author><![CDATA[ jane.mcguire@futurenet.com (Jane McGuire) ]]></author>                    <dc:creator><![CDATA[ Jane McGuire ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/vV4Uj3e5TZvBqmmsjT2EU6.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jane McGuire is Tom&#039;s Guide&#039;s Fitness Managing Editor, which means she looks after everything fitness-related — from running gear and fitness trackers to yoga mats and sports bras. An avid runner, Jane has tested and reviewed fitness products for the past five years, so she knows what to look for when finding a good running watch or a pair of shorts with pockets big enough for your smartphone, running gels, and house keys. &lt;/p&gt;&lt;p&gt;Jane has run six marathons — the London Marathon five times, and the Berlin Marathon once -and is still on a quest to tick off all of the marathon majors. Her marathon PR is 3:30, which she ran in the New Balance Supercomp Elite V5&#039;s, but she also spends a lot of time talking about her  ‘joy plan’, where she runs for happiness, not for PR’s. &lt;/p&gt;&lt;p&gt;Previous to Tom’s Guide, Jane worked for Runner’s World, where she co-hosted the Runner’s World podcast. She also presents on a YouTube channel called the Run Testers, alongside other running-mad journalists, where they review the latest shoes, kit, and tech. Her work has also appeared in Coach, Get Sweat Go, and Women’s Health. &lt;/p&gt;&lt;p&gt;When she&#039;s not pounding the pavements, you&#039;ll find Jane striding round the Surrey Hills, taking far too many photos of her spaniel, Toby. &lt;/p&gt; ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8bpwMoMXdmi3VPqxQNfadU-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[fit older woman with blonde hair]]></media:description>                                                            <media:text><![CDATA[fit older woman with blonde hair]]></media:text>
                                <media:title type="plain"><![CDATA[fit older woman with blonde hair]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8bpwMoMXdmi3VPqxQNfadU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Strength training is essential during all stages of life, but especially for women in their 40s, as hormones begin to shift during perimenopause and menopause, which can impact muscle mass, bone density, and metabolic rate. </p><p>Yet if you’re new to exercise, or you’re returning to exercise following an extended break, it can be tricky to know where to start. Luckily, you’ve come to the right place. I’m in my 30s, but I unrolled my exercise mat, grabbed a set of the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a>, and gave this quick 10-minute workout a try, and could feel it in my midsection as I sat back down at my desk. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@dr.nancy.dpt/video/7637327691250699533" data-video-id="7637327691250699533" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@dr.nancy.dpt" href="https://www.tiktok.com/@dr.nancy.dpt">@dr.nancy.dpt</a>                            <p></p><a target="_blank" title="♬ Man I Need - Olivia Dean" href="https://www.tiktok.com/music/Man-I-Need-7537414199037052945">♬ Man I Need - Olivia Dean</a></section>                    </blockquote></div>                <p>Developed by physical therapist <a href="https://www.tiktok.com/@dr.nancy.dpt" target="_blank" rel="nofollow">Dr Nancy on TikTok,</a> this short workout can be slotted into a busy day to build strength and stamina. Alternatively, you could repeat the circuit twice more for a longer, full-body workout. </p><h2 id="what-is-the-workout-6">What is the workout? </h2><p>The workout consists of four different exercises. You’ll do each exercise twice for 45 seconds, taking a 30-second rest between each set. All you’ll need is your bodyweight and a set of dumbbells.</p><ul><li><strong>Reverse plank with knee lift: 2 x 45 seconds:</strong> Start in a reverse plank position. Lift one foot off the floor and drive the knee in towards the torso, then extend it back to your starting position and repeat on the opposite side. Keep switching sides, keeping your core and glutes engaged throughout.</li><li><strong>Reverse lunge with pulse to dumbbell hammer curl: 2 x 45 seconds:</strong> Hold a dumbbell in each hand and step back into a reverse lunge. As you step back to your starting position, complete a hammer curl, keeping your elbows pressed against your torso. Step back on the opposite leg. Keep switching sides for the full 45 seconds.</li><li><strong>Squat to kneel: 2 x 45 seconds:</strong> Start in a kneeling position with your core engaged, squeezing your belly button into your spine, and straighten both arms out in front of you. Keeping your core engaged, step one foot forward, then the other, and rise into a low squat, then reverse the movement back to a kneeling position. Switch the foot you lead with each time.</li><li><strong>Romanian deadlift to wide-grip row to reverse lunge: 2 x 45 seconds:</strong> Start this exercise with a Romanian deadlift, hinging at your hips. At the bottom of the movement, complete a wide-grip row, engaging your core and squeezing your shoulders at the top. From there, step back into a reverse lunge. Switch the leg you lunge on each rep.</li></ul><h2 id="what-are-the-benefits-20">What are the benefits? </h2><p>As mentioned above, in their 40s, women's estrogen levels naturally drop, and the body begins to lose muscle mass. Strength training is one of the most effective ways to slow down and reverse this loss of muscle. The more muscle you have, the higher your resting metabolic rate, and the less likely you are to gain weight. </p><p>Women are also at a slightly higher risk for osteoporosis than men, especially as they approach menopause. Again, resistance training can help protect your bones, as the stress that lifting weights puts on the bones stimulates osteoblasts, which are the cells responsible for building bone. Strength training can help prevent fractures and breaks as women get older. </p><p>Finally, strength training can help combat some of the other symptoms associated with menopause, such as brain fog, low mood, or sleep disturbances. Even short bursts of exercise can help boost your mood, regulate your blood sugar levels, and help you sleep better at night. Plus, it doesn’t need to be huge workouts with tons of equipment. Grab a set of dumbbells and set aside 10 minutes — you won’t regret it. </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><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/DWliw6KDFwm/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePj9gO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePj9gO.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/wellness/workouts/im-a-personal-trainer-who-works-with-seniors-here-are-the-5-bodyweight-exercises-i-recommend-to-target-impairments-and-prevent-functional-decline">I’m a physical therapist who works with seniors: Here are the 5 bodyweight exercises I recommend</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/no-not-planks-im-a-pt-for-seniors-and-these-are-the-4-best-exercises-you-can-do-for-core-stability-at-every-age">No, not planks! I'm a personal trainer for seniors, and these are the 4 best exercises you can do for core stability at every age</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/over-60-im-a-personal-trainer-and-these-3-floor-exercises-will-show-you-how-strong-your-core-is">Over 60? I’m a personal trainer, and these 3 floor exercises will show you how strong your core is</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>