<?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-GB"
                       href="https://www.tomsguide.com/uk/feeds/tag/workouts"
                       type="application/rss+xml"/>
                            <title><![CDATA[ Latest from Tom's Guide UK in Workouts ]]></title>
                <link>https://www.tomsguide.com/uk/wellness/fitness/workouts</link>
        <description><![CDATA[ All the latest workouts content from the Tom's Guide  UK team ]]></description>
                                    <lastBuildDate>Mon, 06 Jul 2026 07:00:00 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ A yoga instructor says this is the 5-minute yoga routine you need for strong and mobile hips and core muscles ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/a-yoga-instructor-says-this-is-the-5-minute-yoga-routine-you-need-for-strong-and-mobile-hips-and-core-muscles</link>
                                                                            <description>
                            <![CDATA[ A yoga teacher shares a short and effective full-body yoga routine for strong hips and core muscles. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SD7CxTcZxXAm5CHsJwEv2V</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xuqf4mhcJ9vXHhUiauNBWe-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 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/xuqf4mhcJ9vXHhUiauNBWe-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Image left, writer Sam posing in mirror in workout gear, image right, older female performing bridge pose on yoga mat during exercise]]></media:description>                                                            <media:text><![CDATA[Image left, writer Sam posing in mirror in workout gear, image right, older female performing bridge pose on yoga mat during exercise]]></media:text>
                                <media:title type="plain"><![CDATA[Image left, writer Sam posing in mirror in workout gear, image right, older female performing bridge pose on yoga mat during exercise]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xuqf4mhcJ9vXHhUiauNBWe-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm a firm believer that workouts shouldn't feel drawn out and tiresome, which is why short yoga routines and exercise snacking are great ways to fit small but intentional movement efforts into your days. </p><p>This five-minute yoga flow is best saved until just before bedtime or even first thing in the morning to wake your joints and muscles up and boost motivation. It's designed by Jack Bryant, a 500-hour yoga teacher and founder of <a href="https://wellnesswithlarue.com/" target="_blank" rel="nofollow">Wellness With La Rue</a>, </p><p>All you need is one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> for your practice (I recommend a plush one with some cushioning). Let's get started. </p><h2 id="watch-5-minute-yoga-routine-by-jack-bryant">Watch: 5-minute yoga routine by Jack Bryant</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/DaUYnCQFUO6/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Yoga is just as much about the mind as it is the body: pranayama and asana. A regular practice can boost mood and wellbeing, reduce anxiety and help move the body from the sympathetic nervous system (fight-or-flight) to the parasympathetic nervous system (rest and repair). </p><p>There’s also evidence that <a href="https://www.tomsguide.com/wellness/sleep/cant-sleep-yoga-could-add-almost-two-extra-hours-to-your-rest-study-finds">yoga can improve sleep</a> by promoting relaxation and helping the body wind 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:1920px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gbN2UoBG45jU5Sse6Fr8LE" name="celebrity nighttime routines.jpg" alt="A woman practising yoga in the evenings for better sleep" src="https://cdn.mos.cms.futurecdn.net/gbN2UoBG45jU5Sse6Fr8LE.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: Getty Images)</span></figcaption></figure><p>Remember that you have options during class, which Bryant will remind you of. Even a child's pose or downward dog are great options if you're feeling like you need extra rest.</p><p>I like to close my eyes during practice, which is difficult for balance but helps you settle into each pose, focusing on breath. With every inhale, draw the belly in, and with every exhale, expand your stomach and lungs outward and downward.</p><p>I recommend a quiet space where you’ll be unlikely to be disturbed.</p><p>If you enjoy vinyasa flow or more vigorous styles of yoga, we use the term “flow” loosely, so this routine might not be for you. This is a slower-paced, stretchy routine that releases the muscles and joints and recharges your body.</p><p>You’ll spend several breaths in each posture, but try to move with your pace of breath rather than Brayant's, as everyone’s breathing is different, and you might feel you are moving too fast or too slow otherwise. That said, at first, you might prefer to follow his lead if you're unsure of the moves. </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><h2 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h2><ul><li><a href="https://www.tomsguide.com/wellness/fitness/im-72-years-old-heres-the-simple-bodyweight-workout-i-do-to-build-strength-and-mobility-with-just-5-exercises" target="_blank">I’m 72 years old — here’s the simple bodyweight workout I do to build strength and mobility with just 5 exercises</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/forget-burpees-the-pilates-burpee-is-beginner-friendly-and-low-impact-and-youll-love-it" target="_blank">Forget burpees —the 'Pilates burpee' is beginner-friendly and low-impact (and you’ll love it)</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/30-minutes-full-body-two-trainers-share-the-workout-that-builds-muscle-and-strength" target="_blank">30 minutes, full body — two trainers share the workout that builds muscle and strength</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I teach people to be mobile: If you're going to do one mobility drill for strong, open hips, never skip this ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-teach-people-to-be-mobile-if-youre-going-to-do-one-mobility-drill-for-strong-open-hips-never-skip-this</link>
                                                                            <description>
                            <![CDATA[ Strong, open hips are possible with the best hip mobility exercises from a qualified coach. I do this 60-second mobility drill almost every day — here's why I'm keeping it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">KqN3umMaVyLQwQCf9U8NjB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sLHkPL7uvb2yBZUQ8EDedC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Mon, 06 Jul 2026 08:58:09 +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/sLHkPL7uvb2yBZUQ8EDedC-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman performing quad and hip flexor stretch with left leg]]></media:description>                                                            <media:text><![CDATA[Woman performing quad and hip flexor stretch with left leg]]></media:text>
                                <media:title type="plain"><![CDATA[Woman performing quad and hip flexor stretch with left leg]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sLHkPL7uvb2yBZUQ8EDedC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Hip mobility sounds like something you'd focus on in late life, when the stairs are looking a lot more problematic than they once did. But really, the best hip mobility exercises are as much preventative as they are reactive in managing hip health.</p><p>Despite it being more difficult to get clients excited about mobility drills than, say, dumbbell workouts or kettlebell conditioning, I will never forgo certain exercises, whether I get a groan in reply or not.</p><p>Done right, it can make an enormous difference in people's lives, whether that's during workouts, recovery, or just everyday life. And you don't need 30-minute stints, either; microdosing your routine can still pack in the benefits if you're intentional enough.</p><p>The mobility exercise below is one of my anti-aging weapons for helping unstick your hips and get you moving more freely. Plus, it's low-impact and beginner-friendly. You just need one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> to do it. Here's why I swear by it.</p><h3 class="article-body__section" id="section-how-to-improve-mobility-in-one-move"><span>How to improve mobility in one move</span></h3><p>This exercise alone won't change the world, but combined with a consistent routine including resistance training, gentle movement and some weekly mobility work, it can make a huge difference. </p><p>One way to improve mobility naturally is to be intentionally dynamic by moving often and in a variety of patterns, alongside strengthening and loading muscles using resistance. Even if that's adding a few extra walks into your day or having a quick stretch.</p><p>The more you get your body moving, the more you load your muscles and bones to withstand impact and more easily maintain the strength and muscle you already have. Being active is also good for maintaining a <a href="https://www.tomsguide.com/wellness/sleep/simple-metabolism-hack-and-sleeping-through-the-night">healthy metabolism</a>; the more lean muscle mass you have, especially as you get older, the more energy you can expect to burn during the day.</p><div><blockquote><p>Your joints, ligaments and fascia respond well to low-impact movement, which can be achieved through a challenging yet consistent mobility routine. </p></blockquote></div><p>Your joints, ligaments and fascia respond well to low-impact movement, which can be achieved through a challenging yet consistent mobility routine. </p><p>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.</p><p><strong>The routine:</strong> 3-4 sets, 8-10 reps per side.</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/Daaz-Q8jxIr/" 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">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="Q9zMbwtQ5K3A226GF368u3" name="GettyImages-2247267956(1) squat mobility" alt="Three mature women outdoors performing squats on the grass near the ocean at sunset" src="https://cdn.mos.cms.futurecdn.net/Q9zMbwtQ5K3A226GF368u3.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>Depending on ability, programs and individual preferences, I might consider weights, bands, or adjustments to reps and sets, but the basis of the exercise stays the same.</p><p>Here are some benefits:</p><ul><li><strong>Stretches the hips and groin: </strong>The low side lunge position naturally opens the hip and stretches along the adductors (inner thighs) and groin. When the toes are pointed forward, the focus moves to the inner thigh; when the toes point upward, the hamstrings get more of a deep stretch. This is brilliant if you sit for long periods or tend to seize up.</li><li><strong>Helpful for back pain:</strong> While I cannot diagnose or treat back pain like a physio or physical therapist can, this is one of those exercises that many people find help manage and relieve back pain. Focus on keeping a tall spine and avoid hunching. I strongly advise sitting on a yoga brick at all times for support. If you are working with a back condition, speak with a medical professional first.</li><li><strong>Works the hips in two directions: </strong>As you draw your toes up, you rotate the hip outward; you'll do the opposite as you draw your toes forward. This rotation is brilliant lubrication for the pelvis, especially if you experience a lot of lower-body tightness. Essentially, you combine movement with stretching, which I personally find helpful for unsticking "desk hips."</li><li><strong>Effective as a warm-up: </strong>Finally, this exercise works well for warm-ups, especially if you plan to do squat-heavy leg programs or running. You might choose to reduce the reps and/or sets if you're about to begin weightlifting and combine with a few other moves as well.</li></ul><p>Before you consider adding weight, focus on sitting as low as you can and moving with a full range of motion in both directions. I recommend starting seated on a chair with one leg out to the side, then progressing to sitting on a tall book or similar. Eventually, you might reduce the height setting, or you might take away all support. </p><p>Control each of these movements and make the most of them, even if that means reducing the sets or reps or adding more rest. Moving to your end range can be uncomfortable, but you shouldn't experience any sharp pain or pinching.</p><p>Find length through your spine and draw your shoulders down away from your ears. But most importantly of all, be patient; the benefits may not appear straight away, but they're coming.</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/im-a-personal-trainer-these-are-the-4-simple-exercises-i-recommend-if-you-sit-at-a-desk-all-day">I’m a personal trainer: These 4 essential exercises are 'liquid gold' if you sit at a desk all day</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-over-50-these-are-the-3-mobility-exercises-i-never-skip">I'm a personal trainer who works with clients over 50 — these are the 3 mobility exercises I never skip</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">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[ Forget sit-ups — 'This standing exercise is the smart way to train your core and legs after 40,' says a personal trainer ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-sit-ups-this-standing-exercise-is-the-smart-way-to-train-your-core-and-legs-after-40-says-a-personal-trainer</link>
                                                                            <description>
                            <![CDATA[ You can build strong core, hip and leg muscles using this low-impact lunge variation with or without weights. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cH7XvM8fFfR6JLqWXoKQbS</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eRdThbvJNndJfkdf8Upck7-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 05 Jul 2026 06:15:00 +0000</pubDate>                                                                                                                                <updated>Mon, 06 Jul 2026 10:13:11 +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/eRdThbvJNndJfkdf8Upck7-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Man performing a lunge at home]]></media:description>                                                            <media:text><![CDATA[Man performing a lunge at home]]></media:text>
                                <media:title type="plain"><![CDATA[Man performing a lunge at home]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eRdThbvJNndJfkdf8Upck7-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>What if I told you that there's a lunge variation you can try to build a strong set of legs, hips and core muscles with very little gym equipment? You can add weights if you want to, but I can guarantee you'll feel the benefits with or without. </p><p>All you need is a slider (a little disc with a plastic bottom designed for moves like these) or a towel or dishcloth as an alternative. <strong>This simple exercise is</strong> <strong>low-impact on your joints, builds strength and even works your core muscles</strong>. </p><p>If you prefer not to get down on the ground during workouts, standing exercises are the smart way to train your body, and this is one lower-body exercise I swear by. </p><p>Here's how to do it and the benefits.</p><h2 id="how-to-do-sliding-lunges">How to do 'sliding lunges'</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/DaXgWPnAdbm/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Before we get started, building a strong core means more than just hitting your abs with sit-ups or crunches. There are a range of core muscles in your body, wrapping around your torso, extending down to your pelvis and even surrounding your spine. Your core is there for stability, aiding proper breathing and helping you move safely; in fact, it's a powerhouse center for movement.</p><p>For that reason, <strong>moves that require balance, stability and controlled reps are great for building a stronger, more active core</strong>, even if they might not primarily focus on those muscles. </p><p>During this exercise, you'll also practice hinging forward at the hips and leaning your torso forward while keeping a straight spine. Again, hard work for the core, but this will also help work the glutes harder. Think about actively engaging your core by bracing your stomach and drawing your navel in and up as you breathe expansively.</p><p>Move with control and focus, not speed, focusing on inhaling and exhaling as you move. I would start with 6-10 reps per side and 2-4 sets. </p><ul><li>Stand with your feet hip-width apart</li><li>Position your right foot on a towel or similar</li><li>To begin with, place your hands on your hips. When you feel comfortable, extend your arms overhead and glue your biceps to your ears, reaching up high</li><li>Keeping your hips forward-facing, hinge at the hips and lean slightly forward, keeping your spine long</li><li>Slide your right foot behind you and lower into a lunge, keeping the weight in your left leg and forward</li><li>Pause. Take weight out of the right leg and draw the foot forward as you come back to standing. Switch sides.</li></ul><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-X8pRyX"></div>                            </div>                            <script src="https://kwizly.com/embed/X8pRyX.js" async></script><h2 id="what-are-the-benefits-2">What are the benefits? </h2><p>You should feel this mostly in your standing leg and glute so that you can move the towel with your opposite foot in a smooth, sliding motion back and forth. This is brilliant for building resistance into bodyweight lunges using some drag, while testing balance and stability. </p><p>By leaning forward with your arms raised, your body must work against gravity to stay upright, working the core muscles hard and increasing demand on the thoracic spine. Try to keep your back straight without hunching and draw your arms back; the hip hinge position also engages your gluteal muscles more, which can turn an exercise like this from quad-dominant to glute-dominant. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3000px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="YnNqzjbfADPpd9NezBuWJQ" name="lunge_shutterstock_2131333253" alt="a man in headphones doing a lunge outside" src="https://cdn.mos.cms.futurecdn.net/YnNqzjbfADPpd9NezBuWJQ.jpg" mos="" align="middle" fullscreen="" width="3000" height="1687" 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><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><p>As a personal trainer, I find my clients actually love exploring <a href="https://www.tomsguide.com/wellness/workouts/no-crunches-all-abs-this-5-move-standing-workout-shreds-your-core-with-just-a-dumbbell">standing exercises</a> much more as they get older, whether that's for ease, mobility, or injury-related conditions.</p><p>Once clients feel comfortable with the movement, I often add a dumbbell or kettlebell. Another option is to loop a flexible band just above the knees.</p><div><blockquote><p>As a personal trainer, I find my clients actually love exploring standing exercises much more as they get older, whether that's for ease, mobility, or injury-related conditions.</p></blockquote></div><p>See if you can push one leg back for the count of four, then forward again for the same count of four. This is inspired by Pilates tempo, which involves slowing reps down to increase overall workload and intensity without adding weight or reps.</p><p>For an even greater challenge, see if you can hold a weight with both hands overhead rather than your chest; you might feel more engagement in your back muscles, arms and shoulders, and it's a great option to try if you have limited weights available. </p><p>I sit behind a desk for multiple hours during the day, so I find this lunge variation a brilliant addition for stretching out the hips after a long day and getting my back, legs and shoulders moving again. </p><p>Whether you enjoy running, weightlifting, Pilates, or something else entirely, a strong and stable core and set of glutes and legs are even more important as you get older. Give this a try and let us know in the comments what you think.</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/im-a-personal-trainer-who-works-with-clients-over-50-these-are-the-3-mobility-exercises-i-never-skip" target="_blank">I'm a personal trainer who works with clients over 50 — these are the 3 mobility exercises I never skip</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/after-60-this-is-the-10-minute-routine-i-use-with-my-clients-to-stay-strong-mobile-and-independent" target="_blank">After 60, this is the 10-minute routine I use with my clients to stay strong, mobile and independent</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" target="_blank">'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 swapped standard push-ups for dumbbell push-ups in all my workouts — here’s what happened ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-swapped-standard-push-ups-for-dumbbell-push-ups-in-all-my-workouts-heres-what-happened</link>
                                                                            <description>
                            <![CDATA[ I do push-ups as part of most of my workouts and have found that opting for the dumbbell variation is more effective for me. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">SeDuVabkHWyV2QERDXrrN4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FCMEXmzDCrdZhSxYjrPNKV-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 05 Jul 2026 04:15: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/FCMEXmzDCrdZhSxYjrPNKV-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Woman performing a dumbbell push-up during CrossFit style workout]]></media:description>                                                            <media:text><![CDATA[Woman performing a dumbbell push-up during CrossFit style workout]]></media:text>
                                <media:title type="plain"><![CDATA[Woman performing a dumbbell push-up during CrossFit style workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FCMEXmzDCrdZhSxYjrPNKV-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>While I like to mix up my workouts and do a variety of different exercises to keep them interesting, push-ups are one move I almost always include in whatever session I’m doing.</p><p>They’re a classic for a reason, and one of the best ways to improve your all-round upper-body strength at home with minimal or no equipment.</p><p>Until recently, I almost always did the bodyweight-only version of the move, which is great, but having made the switch to dumbbell push-ups over the past month or so, I have found it a worthwhile upgrade.</p><p>If you have a set of the<a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells"> best dumbbells </a>at home, I’d suggest giving the dumbbell push-up a try. Here’s how to do it, and what I noticed after doing it for a month.</p><h3 class="article-body__section" id="section-how-to-do-dumbbell-push-ups"><span>How to do dumbbell 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:1937px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="3Gbu3sHqX9hCvYKCsF63ch" name="GettyImages-982409006.jpg" alt="a photo of a woman doing a dumbbell push up" src="https://cdn.mos.cms.futurecdn.net/3Gbu3sHqX9hCvYKCsF63ch.jpg" mos="" align="middle" fullscreen="" width="1937" height="1090" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Getty Images/Westend61)</span></figcaption></figure><p>Set up in a high plank position, holding weights in each hand, so you’re supporting your upper body on top of the dumbbells.</p><p>Bend your arms to lower your chest toward the floor, maintaining the plank position from your shoulders to your feet.</p><p>When you feel a deep stretch in your chest as you lower between the dumbbells, push back up to the starting position. Here's what I noticed when doing them.</p><h2 id="it-definitely-benefitted-my-chest">It definitely benefitted my chest</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5022px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AU33QWGimhjcnFWa7bmDCK" name="shutterstock_2267505009.jpg" alt="a photo of a couple doing dumbbell push ups" src="https://cdn.mos.cms.futurecdn.net/AU33QWGimhjcnFWa7bmDCK.jpg" mos="" align="middle" fullscreen="" width="5022" height="2825" 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>The main advantage of dumbbell push-ups over the standard move is that it increases the range of motion and allows you to get deeper when you lower, which stretches the chest muscles and makes them work harder to stimulate growth.</p><p>I’ve been doing push-ups regularly for years, but after just a few weeks of doing dumbbell push-ups, I noticed increased definition and size in my pecs. </p><p>If that’s your aim, you’ll also want to do moves like the bench press with heavier weights, but it was a welcome bonus just as someone looking to build general strength.</p><h2 id="by-narrowing-the-dumbbells-you-can-work-the-triceps-harder">By narrowing the dumbbells you can work the triceps harder</h2><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="prJgcxbaXgzk7VnYpxA5Le" name="dumbell pushup.jpg" alt="a photo of a man doing dumbbell push up workout" src="https://cdn.mos.cms.futurecdn.net/prJgcxbaXgzk7VnYpxA5Le.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/Oscar Wong)</span></figcaption></figure><p>As with normal push-ups, you can shift the focus of the move to different muscles by widening or narrowing your grip.</p><p>Having the dumbbells wider apart works the chest and shoulders more, while bringing them closer hits the triceps harder, and I tend to mix up my approach during workouts to change the focus.</p><p>It’s more noticeable how hard the triceps are working when doing push-ups on dumbbells compared with the standard push-up, and maintaining my balance while having the weights close together was a challenge.</p><h2 id="i-worked-harder-to-maintain-a-stable-plank">I worked harder to maintain a stable plank</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1911px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2ZszYi347LtczjTAJ4brmj" name="shutterstock_1099537766 triceps push up.jpg" alt="Woman in push-up position with hands on yoga blocks" src="https://cdn.mos.cms.futurecdn.net/2ZszYi347LtczjTAJ4brmj.jpg" mos="" align="middle" fullscreen="" width="1911" height="1075" 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>Maintaining a plank position while you lower and raise yourself is part of the challenge of any push-up — you don’t want to sag or buck your hips — but the dumbbell push-up felt like it was recruiting more stabilizing muscles during my workouts.</p><p>You’re supporting your upper body on the grips of the dumbbells, rather than having your hands flat against the floor, which means you’re more unstable. I feel like the move benefits my core strength and stability more as a result.</p><h2 id="hexagonal-dumbbells-are-best">Hexagonal dumbbells are best</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EUnWaLgcyAXDbi3j4CZ5j" name="CAP-Barbell-Coated-Hex-Dumbbells__CAP.jpg" alt="Best affordable home gym equipment in 2020" src="https://cdn.mos.cms.futurecdn.net/EUnWaLgcyAXDbi3j4CZ5j.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: CAP)</span></figcaption></figure><p>While you can do the dumbbell push-up with any type of dumbbell, hexagonal ones are by far the best option because they provide a stable base for the move.</p><p>Circular dumbbells, in contrast, can roll around, especially on hard floors. Unless you’re looking for the extra challenge of holding them still while doing push-ups, I’d use hexagonal weights.</p><p>You can also do the move using yoga blocks, which allow you to support yourself on flat palms if you prefer, or even kettlebells.</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/DaS54jQoExZ/" 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><h3 class="article-body__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 added this one unexpected exercise to every workout for a month — and my core strength is skyrocketing ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-added-this-one-unexpected-exercise-to-every-workout-for-a-month-and-my-core-strength-is-skyrocketing</link>
                                                                            <description>
                            <![CDATA[ Here’s everything you need to know about the bear plank-to-pike push-up variation and why adding it to my workouts was a game-changer. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4nekor7aaskTb5FhnB7NJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/WKXyuF8ndimMBUWC8TTQ6i-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 04 Jul 2026 07:45:00 +0000</pubDate>                                                                                                                                <updated>Mon, 06 Jul 2026 08:57:16 +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/WKXyuF8ndimMBUWC8TTQ6i-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Muscled woman wearing sports bra close-up]]></media:description>                                                            <media:text><![CDATA[Muscled woman wearing sports bra close-up]]></media:text>
                                <media:title type="plain"><![CDATA[Muscled woman wearing sports bra close-up]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/WKXyuF8ndimMBUWC8TTQ6i-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>About a month ago, I saw someone in the gym elevating their feet on a tall box during pike push-ups, and it got me thinking about other bodyweight exercises I could transform using the same equipment. </p><p>The <a href="https://www.tomsguide.com/news/i-did-bear-planks-every-day-for-a-week-heres-my-results">bear plank</a> and <a href="https://www.tomsguide.com/news/i-did-20-pike-push-ups-every-day-for-a-week-heres-what-happened">pike push-up</a> are both hard on the core muscles while strengthening various other muscle groups like the arms and shoulders, but combining the two and adding a box for height has absolutely changed the game for my functional strength and flexibility. </p><p>You just need a box, sofa, bed, or similar to elevate your feet, and you're ready to get started. Here's what they are, how to do them, the benefits and what happened when I added them to workouts for a month. </p><h2 id="how-to-do-bear-plank-to-pike-push-ups">How to do bear plank-to-pike push-ups</h2><p>You'll start in a bear plank, which strengthens your hips, quads, arms, shoulders, and deeper core muscles; then you'll lift your hips up and back, similar to a downward-facing dog. </p><p>From here, shift your weight forward slightly over your hands while keeping your hips high, then perform an <a href="https://www.tomsguide.com/how-to/how-to-overhead-press-to-build-upper-body-strength-and-muscle">overhead press</a> by tapping the crown of your head to the ground (or as close to it) in front of your hands. Push back up, then drop your knees back into the bear plank.</p><p>Don't worry, it's hard to visualize, so I demonstrate how to do it below.</p><p>There's quite a lot of weight-bearing on your wrists, so only move to your ability and stop if you need to. You could also elevate your hands on dumbbells or push-up bars. If you cannot reach your head to the ground, place a block or book in front of your hands and aim for that instead. </p><p>Seek medical advice first if you're unsure about trying this exercise.</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/DaZvXf2AEnL/" 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</li><li>Lift your knees to hover just above your mat, keeping your toes tucked under</li><li>Lift your hips up and back into downward dog with a slightly shorter stance</li><li>Shift your weight forward, bend your elbows, then tap the crown of your head down just in front of your hands</li><li>Press up and extend your elbows, pushing your hips back</li><li>Drop your knees to hover again in the bear plank position</li><li>Once you feel comfortable, place a step or box behind you and repeat the move with your feet elevated on the box. This will slightly change your range of motion and body positioning.</li><li><em><strong>Continue for 8-12 reps and 3-4 sets, or 50 seconds of work and 10 seconds of rest for 5-6 rounds. </strong></em></li></ul><h2 id="the-benefits">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: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>Here’s what a bear plank-to-pike push-up can do for your body:</p><p><strong>Strengthen your core</strong></p><p>Bear planks and pike push-ups already require your core to work hard to stabilize your torso and drive movement. However, your deep core will be working here, not just more superficial muscles like the abs, but also the internal and external obliques along your waist, sometimes playfully referred to as "shark gills." Elevating your feet will shift weight into your chest, shoulders and arms, working your upper body harder. </p><p><strong>Challenge your range of motion and overall strength</strong></p><p>The box provides a deficit, which means your overall range of motion and distance to travel increases, increasing time under tension and load on the body. Your knees will have further to drive downward, and you'll notice it's also harder to lift your hips high, working the back body flexibility, including your hamstrings, even more. Without weights, this move will really test strength, and I can guarantee it'll work up a sweat.</p><p><strong>Improve functional movement</strong></p><p>While I don't anticipate you're doing this type of movement daily, practicing this movement can improve your ability to weight-bear on your wrists and open up the back of the body if you find your hamstrings are tight. While it doesn't transfer directly to crawling, it can mimic activities that involve being on your hands and knees or using your upper body.</p><h2 id="what-happened-when-i-added-it-to-my-weekly-routine">What happened when I added it to my weekly routine?</h2><div><blockquote><p>At Tom's Guide, we love experimenting with different exercises and movements, and these can last anything from a week to a few months, or even a year or more. </p></blockquote></div><p>At Tom's Guide, we love experimenting with different exercises and movements, and these can last anything from a week to a few months, or even a year or more. Of course, the longer you give something, the more time you have to notice its drawbacks or benefits. </p><p>For that reason, I've been trying to add this move to most of my workout routines for roughly 30 days; more than enough time to see how the move impacted my body. Combined with my <a href="https://www.tomsguide.com/news/yoga-vs-pilates-which-burns-more-calories">yoga and Pilates</a> routine, I've found this exercise beneficial for my shoulder and arm strength, hamstring flexibility, and I can really feel my core working throughout, especially with both feet elevated.</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><p>Obviously, I haven't seen a difference in how my abs look (it's unlikely I'll ever sport a six-pack, as this comes down to a lot more than your workouts), but how they feel? Game-changer. Combined with diaphragmatic breathing (or belly breathing), I feel like I've improved my ability to engage my deep core and drive movement through those powerhouse core muscles.</p><p>My ability to perform the exercise has improved, and I feel stronger during my yoga and Pilates workouts. Win-win.</p><p>Why not add it to your routine and let me know what you think?</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[ No gym, no jumping, no equipment — this low-impact 20-minute workout builds bulletproof strength ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/no-gym-no-jumping-no-equipment-this-low-impact-20-minute-workout-builds-bulletproof-strength</link>
                                                                            <description>
                            <![CDATA[ You don't need to head to the gym, jump around doing burpees, or use weights to build stronger joints and muscles, as this workout shows. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">EUuc8jQkMPo7RUdxJCpNUJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/sQRw5ASrMaUKJkpd6FBTQh-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 03 Jul 2026 05: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/sQRw5ASrMaUKJkpd6FBTQh-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[senior man doing a plank]]></media:description>                                                            <media:text><![CDATA[senior man doing a plank]]></media:text>
                                <media:title type="plain"><![CDATA[senior man doing a plank]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/sQRw5ASrMaUKJkpd6FBTQh-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm here to show you that you can still get stronger without jumping, gym time, or equipment; you just need the best strengthening exercises for you and the right program, performed consistently and with progression.</p><p>Now, that's not to say I don't recommend lifting weights. Loading your bones and muscles is the best way to counteract aging, muscle mass decline and loss of bone density, so I strongly recommend resistance training at all stages of life. </p><p>But if it's just you and your <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">yoga mat</a>, then you need to give this bodyweight workout a go. And what better way to add resistance to your training routine than working against your own bodyweight? </p><p>Ready? Let's get started.</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-20-minute-low-impact-workout-for-all-ages">Watch: 20-minute low-impact workout for all ages </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/DaS54jQoExZ/" 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>To keep the intensity high without weights (of course, you could add weights and equipment if you wish), we will use an EMOM format, which means "Every minute on the minute."</p><p>Perform<strong> 8-12 reps </strong>of the first exercise, then<strong> rest</strong> for the remainder of the minute. The aim is to get roughly <strong>10-15 seconds of rest each time</strong>. On the next minute, perform 8-12 reps of the second exercise, then rest. You'll work through<strong> four exercises</strong>, each starting on a new minute, and<strong> five rounds</strong>, totaling <strong>20 minutes</strong>.</p><p>Each of the four moves works to build <a href="https://www.tomsguide.com/features/what-is-functional-training">functional fitness</a> and strength, using movements you'd see in everyday life, like pushing or squatting. If you're not getting enough rest, cut the reps back; if you're resting too long, add reps.</p><ul><li><strong>Diamond push-ups:</strong> Start in a push-up position either on your knees or with them lifted away from the mat. Stack your shoulders over your wrists and ensure your hips align with your shoulders. Touch your index fingers and thumbs together to create a diamond shape. Engage your core. Bend your elbows and lower your chest toward the floor, pause, then drive upward again.</li><li><strong>Frog squats: </strong>Stand with your feet roughly shoulder-width apart, then drop down to the bottom of a squat and turn your toes slightly outward. Hook your elbows to the inner knees and push your knees outward in line with your toes. With your hands in prayer position, pull your shoulders back and down, lift your chest and straighten your back. With control, lift your butt and lower your chest to almost parallel to the floor. Sit your butt down and lift your chest again.</li><li><strong>Inchworm downward dogs: </strong>Stand with your feet hip-width apart. Roll down your spine to place your hands on the mat in front of your feet. Bring as much bend to your knees as you need if you have very tight hamstrings. Walk your hands out until you come into a plank position with your shoulders stacked over your wrists. Lift your hips up and back into a downward dog, then walk your hands back to your feet and roll up slowly to stand.</li><li><strong>Supermans: </strong>Lie on your stomach with your arms and legs extended down the mat. Rest your forehead on the mat, too. At the same time, lift your arms, chest and legs into the air as high as possible, squeezing your mid-back and glutes. Hold the position at the top for a beat, and knit your shoulder blades together. Slowly lower with control.</li></ul><h2 id="what-are-the-benefits-3">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 benefits for different body parts. </p><p><strong>Diamond push-ups </strong>still work your pectorals, triceps and the fronts of your shoulders, known as the anterior deltoids, but they are much more triceps-focused and require lots of core activation to stabilize your torso. Use your knees if it improves your form, as the goal is to lower the chest as much as possible, then drive upward with power as you exhale and extend both elbows. </p><p><strong>Frog squats </strong>burn out the quads and hamstrings without high-intensity moves like jump squats or broad jumps. It's also great for opening your hips and groin, so focus on driving your elbows into the inner legs and lengthen through your spine. Say hello to lower-body strengthening without any kit at all. </p><p><strong>Inchworm downward dog </strong>stretches along the back of your body, including your spine, glutes, hamstrings and calves. As you walk yourself into a plank, your core, arms and shoulders are active to keep you stable. Challenge yourself to straighten your legs as much as you can. As you push into downward dog, this also stretches along the back of the body, including your upper back, chest and shoulders. Walk yourself in and out with control, and this becomes a full-body exercise.</p><p><strong>Supermans</strong> are effective for strengthening the posterior chain, which includes the muscles in your back, surrounding your spine, your rear deltoids (shoulders) and your glutes. This is particularly important for targeting the postural muscles that support, you guessed it, your posture. Focus on squeezing your glutes hard to protect your lower back, and lifting high. If this feels like too much, lift just your arms or legs, or alternate.</p><div><blockquote><p>Each of these exercises brings benefits for different body parts. </p></blockquote></div><p>Control and constant tension are the goals, so if that means reducing your reps, that's totally fine. You're working most muscle groups throughout, including your back, chest, shoulders and arms in your upper body; your core; your hips, glutes, quads, hamstrings and calves in your lower body.</p><p>What's more, you're doing it without heaps of fancy gym equipment, classes, or jumping around.</p><p>You can still play with the weights or equipment you like to use. I like to add dumbbells and bands, but you can still work up a serious burn without them. If this is your first time trying these moves, you might find working with your bodyweight the best option.</p><p>Give this low-impact bodyweight workout 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’m a personal trainer: These 4 essential exercises are 'liquid gold' if you sit at a desk all day ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-these-are-the-4-simple-exercises-i-recommend-if-you-sit-at-a-desk-all-day</link>
                                                                            <description>
                            <![CDATA[ These four moves can help you relieve tension in your hips, spine, glutes and hamstrings if you sit for long periods. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7ngjjiAfPuTDiHAvDmGdw</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/3678FfvNqpke3QrYAxWBkU-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 02 Jul 2026 06:30:00 +0000</pubDate>                                                                                                                                <updated>Thu, 02 Jul 2026 11:42:48 +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/3678FfvNqpke3QrYAxWBkU-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a woman doing a mobility workout]]></media:description>                                                            <media:text><![CDATA[a woman doing a mobility workout]]></media:text>
                                <media:title type="plain"><![CDATA[a woman doing a mobility workout]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/3678FfvNqpke3QrYAxWBkU-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There are some essential exercises I recommend if you sit for prolonged periods during the day, especially if your job involves desk work. The best exercises for keeping your muscles and joints strong, mobile, and flexible aren't necessarily super fancy, but they do the job they're designed to do.</p><p>I'm sharing four of my go-to moves to release tension in your spine, stretch your glutes, lower back, hips, and hamstrings, and create strength and range of motion around your joints, particularly your pelvis. </p><p>If you are currently working with a health condition or injury, I recommend seeking personalized advice from your healthcare provider before trying these exercises. All you need is one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats</a> to get started. Check them out below.</p><h3 class="article-body__section" id="section-4-essential-exercises-to-try-if-you-sit-at-a-desk-all-day"><span>4 'essential' exercises to try if you sit at a desk all day</span></h3><p><strong>The routine:</strong> Perform each exercise for<strong> 60 seconds</strong>, briefly rest, then repeat for a <strong>second round</strong>.</p><p>Remember, only move within your ability and don't force your end range of motion to a point of pain. These moves are simple, repeatable and scalable, so below I explain how to progress them so that you can keep benefiting at any level or age.</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/DaQg2V2kawe/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>I train clients of all ages and abilities, and I'm seeing mobility training and anti-aging routines being taken up across the board. It's about steering away from just high-impact training and focusing on <a href="https://www.tomsguide.com/features/what-is-functional-training">functional fitness</a> instead.</p><p>I like to combine <a href="https://www.tomsguide.com/wellness/fitness/im-a-personal-trainer-3-things-i-wish-i-had-known-about-stretching-and-mobility-when-i-started-exercising">stretching and mobility </a>work to target muscle flexibility and joint range of motion. This will help keep your joints and muscles robust to withstand muscle atrophy, bone density loss, or injury. If you don't load them, you erode them.</p><h3 class="article-body__section" id="section-what-are-the-benefits"><span>What are the benefits?</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:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="r7SzXSsXxRH4CwvwvnAewM" name="chair workout women .jpg" alt="a photo of a woman doing a chair workout" src="https://cdn.mos.cms.futurecdn.net/r7SzXSsXxRH4CwvwvnAewM.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 Images)</span></figcaption></figure><p>Each of these exercises focuses on a different benefit. </p><div><blockquote><p>If you don't load them, you erode them.</p></blockquote></div><p><strong>Seated windshield wipers: </strong>Start seated with your feet planted on the mat wider than shoulder-width, knees bent. Place your hands next to your hips. Roll your knees over to the right side so that the inner left knee and outer right knee touch the mat, then repeat over to the left side so that the outer left knee and inner right knee touch the mat. Keep your back straight and chest proud as you move from side to side. </p><p>Don't worry if your knees don't physically touch the ground, as this will be determined by the range of motion available in your hips. This is a great lower-body exercise for warming up your muscles and joints while also relieving tension in your lower back and pelvis as you internally rotate one hip and externally rotate the other.</p><p><strong>Tabletop hip circles</strong>: Start in a tabletop position; it's important to stack your shoulders directly over your wrists with your hips over your knees. Draw your navel in. You could position a book, yoga block, or dumbbell to your right side as a marker, but this is optional. Lift your right knee to hover above the mat, then create large circles with your right leg, opening the knee away from the body first. </p><p>If using a marker, try to circle your leg around it without knocking it over. Spend 30 seconds on one side, then switch sides.</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><p><strong>Reverse tabletop</strong>: This is all about strengthening your arms and shoulders and stretching the back body and hips. It's a strong posture, but over time, aim to create a straight line from your shoulders to your knees as you press your hips upward to the ceiling. </p><p>Start seated with your knees bent and feet planted hip-width apart. Place your hands behind your hips, fingers pointed toward your feet. Keep your chin tucked and gaze ahead, then press your hips upward as you squeeze your glutes to protect your back. Pause, really engaging your core and drawing your ribs in and down. Lower your hips to the ground slowly and repeat.</p><p><strong>Dynamic puppy pose</strong>: Your spine will love you for this, as will your upper chest, upper back, shoulders and arms. Consider this a child's pose on steroids, giving you a deep upper-body stretch but with some gentle movement added as a side.</p><p>Start in tabletop (as above); your knees must stack beneath your shoulders. Keeping your hips high and toes untucked, walk your hands along the mat away from your body as far as you can. Press down with your palms and either bring your forehead or chin to rest on the mat. Slowly release and repeat for 60 seconds.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:8192px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AdgehcXSdbfiyEzUsMrneN" name="shutterstock_2670474609" alt="a woman doing a single leg glute bridge" src="https://cdn.mos.cms.futurecdn.net/AdgehcXSdbfiyEzUsMrneN.jpg" mos="" align="middle" fullscreen="" width="8192" height="4608" 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>Now let's look at some progressions you can try:</p><ul><li><strong>Seated windshield wipers: </strong>Experiment with the distance you place your feet from each other and consider holding light weights to your hips or lying on your back or elbows.</li><li><strong>Tabletop hip circles: </strong>As mentioned briefly, you could place a dumbbell on its end to one side and focus on creating circles around the object without knocking it over; this tests control and range better. I sometimes add a loop band above the knees of my clients for added resistance.</li><li><strong>Reverse tabletop: </strong>Consider walking your feet further away from you to target your hamstrings more. You could also place a weight across your hips and/or slow the exercise to lift and lower for 4 seconds each way.</li><li><strong>Dynamic puppy pose: </strong>Consider elevating your hands on a yoga block or similar to create a deficit; this means your chest and shoulders have further to travel to reach the mat. To increase the stretch, hold longer and/or place your chin on the mat and gaze forward. You could also lift your palms away to balance on your fingertips.</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-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[ According to a personal trainer, these 4 moves help improve your balance and stability quickly, perfect for seniors and beginners ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/according-to-a-personal-trainer-these-4-moves-help-improve-your-balance-and-stability-quickly-perfect-for-seniors-and-beginners</link>
                                                                            <description>
                            <![CDATA[ According to a personal trainer who works with seniors, these are the exercises to prioritize ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fnjiwLgiqiT76ybSm6E3BJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XhQpAu2V5JQQAj3SRzg9Ec-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Jul 2026 09: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/XhQpAu2V5JQQAj3SRzg9Ec-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a middle aged woman stretching ]]></media:description>                                                            <media:text><![CDATA[a middle aged woman stretching ]]></media:text>
                                <media:title type="plain"><![CDATA[a middle aged woman stretching ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XhQpAu2V5JQQAj3SRzg9Ec-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As we get older, working on our balance and stability is the best way to boost our longevity and independence. Yet if you’re a complete beginner, or you’re returning to exercise following an extended break, it can be tricky to know where to start. </p><p>Luckily, you’ve landed in the right place. This simple workout below boosts your balance and stability using just four bodyweight exercises that can be done from just about anywhere. You’ll be working one side of the body at a time, called unilateral training, which can help address muscle imbalances and weaknesses and, in turn, prevent falls. </p><p>As a reminder, if you’re currently recovering from an injury, it’s always best to seek personalized advice from a qualified professional. </p><h2 id="what-is-the-workout">What is the workout? </h2><p>All you’ll need for the workout is your own bodyweight. They can be done at home, and according to personal trainer <a href="https://www.tiktok.com/@growyoungfitness/video/7654601709494258974" target="_blank" rel="nofollow">Deron Buboltz,</a> who specializes in training seniors, they can give you fast, noticeable gains. </p><p>Here are the four exercises:</p><ul><li><strong>Lateral leg lift: </strong>Buboltz says that this move works on your hip strength and balance. Start by standing with your feet hip-width apart and engaging your core, thinking about sucking your belly button in towards your spine. From here, shift your bodyweight onto one leg and lift the other leg out to the side, keeping your foot flexed and your leg straight. Lift a few inches off the floor before bringing it back to your starting position. Keep switching sides for 15 seconds.</li><li><strong>Skaters:</strong> This move works on your side-to-side weight shifting — this is a functional exercise you’ll use every day. To do this exercise, take a big step out to one side, and take the other leg behind and tap your foot on the floor. Swing your arms as you move and keep switching sides for 15 seconds.</li><li><strong>Forward leg lifts</strong>: This simple exercise works on your leg stability. Start with your feet hip-width apart and your core engaged. Keeping your leg straight and your foot flexed, lift one foot a few inches off the floor slowly and with control, before lowering it back to your starting position and switching sides. Do 15 seconds.</li><li><strong>Tapping forwards: </strong>Buboltz says this exercise works on coordination control. Start with your feet hip-width apart and tap one foot out in front of you, rotating your torso to the side you are tapping forward on. Keep this exercise as dynamic as possible and keep switching sides for the full 15 seconds.</li></ul><p>Do 3-5 rounds of these exercises, and add them to your routine a few times a week to see a difference in your overall balance and stability. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@growyoungfitness/video/7654601709494258974" data-video-id="7654601709494258974" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@growyoungfitness" href="https://www.tiktok.com/@growyoungfitness">@growyoungfitness</a>                            <p></p><a target="_blank" title="♬ original sound - Grow Young Fitness" href="https://www.tiktok.com/music/original-sound-7654601747033344798">♬ original sound - Grow Young Fitness</a></section>                    </blockquote></div>                <h2 id="what-are-the-benefits-4">What are the benefits? </h2><p>All of these exercises help you build the functional fitness you’ll need every single day for exercises like stepping up and down from a kerb, or stepping to the side when a toddler is scooting towards you. Working on your overall balance and stability can help prevent accidental falls and injuries and help you catch yourself if you do trip. </p><p>These exercises also work on your overall proprioception. This is your brain’s ability to sense where your limbs are without looking at them. It’s how you know where your hand is if you hold it up to your face in a dark room, even when you can’t see it. As we get older, the sensory receptors in our joints and tendons lose their sensitivity. Stability training can help rewire these pathways and wake up the neural connection between your feet and brain. </p><p>Finally, all of these exercises will work on your single-leg strength and your core. As we get older, we naturally lose muscle mass, and this speeds up dramatically after 60 in a process called sarcopenia. Balance and stability exercises like single-leg lifts recruit fast-twitch muscle fibres and can help maintain muscle strength. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4dAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4dAX.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/according-to-a-personal-trainer-this-exercise-is-100-times-more-effective-than-crunches-i-tried-it-and-was-humbled" target="_blank">According to a personal trainer, this exercise is 100 times more effective than crunches. I tried it and was humbled</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[ Forget sit-ups and burpees — this 30-minute standing Pilates workout builds deep strength throughout your whole body ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-sit-ups-and-burpees-this-30-minute-standing-pilates-workout-builds-deep-strength-throughout-your-whole-body</link>
                                                                            <description>
                            <![CDATA[ Stay standing for this 30-minute workout that uses Pilates-inspired exercises to strengthen muscles all over the body without putting your joints under pressure. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yZdVWFM4N9s4mwi9EEYR8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RSfa7b8K6eZQqTZdhtjzCS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Jul 2026 06: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/RSfa7b8K6eZQqTZdhtjzCS-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Do this workout instead of a squat challenge ]]></media:description>                                                            <media:text><![CDATA[Do this workout instead of a squat challenge ]]></media:text>
                                <media:title type="plain"><![CDATA[Do this workout instead of a squat challenge ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RSfa7b8K6eZQqTZdhtjzCS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>While it’s not always easy to find the time to train, spending 30 minutes working out is an investment in both your physical and mental health, and if you can fit this standing Pilates session into your day, you definitely won’t regret it.</p><p>The workout has been created by fitness trainer<a href="https://www.youtube.com/@EleniFit" target="_blank"> Eleni Fit</a>, who guides you through the whole session and does it herself so you can copy her technique.</p><p>You don’t need any equipment at all for the workout, though if you have one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> to hand, it will give you better grip on hard floors.</p><p>If you have some light dumbbells or hand weights, they would also be easy to integrate into the session to increase its difficulty. If you do the workout once and find it comfortable, adding weights would be a great way to progress next time you do it.</p><h3 class="article-body__section" id="section-watch-eleni-fit-s-30-minute-standing-pilates-workout"><span>Watch Eleni Fit’s 30-minute standing Pilates 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/e2cJHRo-6R0" allowfullscreen></iframe></div></div><p>Along with the workout itself, Eleni leads you through a warm up and cool down, which are worth doing as well if you have the time.</p><p>During the workout itself you do each exercise for 40 seconds and then rest for 10 seconds between moves. </p><p>It doesn’t sound like a lot of rest, but the moves you’re doing are gentle and flow together so it shouldn’t be too tiring overall, and you can always take extra breaks if required during the session.</p><p>As a Pilates-inspired workout, the focus is on moving with control and engaging the right muscles during each move while also maintaining good posture. Don’t rush through your reps, but instead try to match Eleni’s pace and form.</p><p>Several of the exercises involve pulses — small repetitive movements that are great for exhausting the target muscles quickly. You might need an extra rest after these moves, given how tiring they can be.</p><p>Throughout the workout you’ll also regularly train one side of the body at a time, and work on one leg, which is great for improving your stability and balance. If you’re worried about falling, make sure you’re near a sturdy table or chair to lean on if required.</p><p>Along with strengthening muscles all over the body, the fact that you’ll be moving for 30 minutes in total with this workout means it does also get your heart rate up and boost your cardio fitness.</p><p>This is despite the fact there’s no jumping around in this session, so it’s a good low-impact way to work on your cardio compared to more intense options like HIIT or running.</p><p>If you enjoy this workout and are looking for ways to increase the difficulty without adding in too much impact, then a standing dumbbell session would be a great option.</p><p>This 12-minute standing dumbbell workout focuses on your core strength, but also works muscles around the rest of your body, and if you use light weights at first it’s both accessible and effective.</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[ I did the Frankenstein walk to strengthen my hip flexors and build core stability: here’s what happened after a week ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-did-the-frankenstein-walk-to-strengthen-my-hip-flexors-and-build-core-stability-heres-what-happened-after-a-week</link>
                                                                            <description>
                            <![CDATA[ The Frankenstein walk is a dynamic stretch that warms up your lower body, loosens tight hamstrings and gets your hip flexors fired up. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2SHHMyNymHWhzyAhBytfNi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/docEvX2BGGXU8XYUfJA3ek-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 30 Jun 2026 07:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Workouts]]></category>
                                                    <category><![CDATA[Wellness]]></category>
                                                    <category><![CDATA[Fitness]]></category>
                                                                                                                    <dc:creator><![CDATA[ John Carroll ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RL2GQ5uUrLPPtm7WiYsqoF.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/docEvX2BGGXU8XYUfJA3ek-1280-80.jpg">
                                                            <media:credit><![CDATA[Getty Images/Witthaya Prasongsin]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a man doing a dynamic running warmup ]]></media:description>                                                            <media:text><![CDATA[a man doing a dynamic running warmup ]]></media:text>
                                <media:title type="plain"><![CDATA[a man doing a dynamic running warmup ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/docEvX2BGGXU8XYUfJA3ek-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>As I’ve grown older, I’ve learned a few things. I probably should have learned a lot of things, but I’ll take what I can get. One of them is that stretching is increasingly important as the years gallop by and disappear over the hill, never to be seen again. This is something I should have been aware of a long time ago, but, again, I’ll take what I can get. </p><p>So I now stretch before and after exercise, and I also stretch in the mornings (yawning excessively and extending the arms out to the sides like a cartoon bear emerging from hibernation does not count, by the way). I do a range of stretches but I had never tried the Frankenstein walk, which is a dynamic stretch, meaning it’s designed to improve range of motion and act as a warm-up move. And now that I have… well, I plan to keep walking this way.</p><h2 id="what-is-it">What is it?</h2><p>The Frankenstein walk is one of the most straightforward moves I have ever done for <em>Tom’s Guide</em>. It works the hamstrings, quads, and hips, and also helps you loosen up before exercise. Tight hamstrings are a major factor in limiting performance <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4668158/" target="_blank" rel="nofollow">in daily activities, as well as sport, and can lead to back pain, too</a>, as can <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC7922112/" target="_blank" rel="nofollow">tight hip flexors</a>. </p><p>The exercise is also known, more prosaically, as the toe-touch walk and while infinitely less catchy, that name is also far more accurate. Victor Frankenstein had, from all indications, a perfectly normal human walk (though as played by Oscar Isaac in the recent Guillermo del Toro adaptation, he was inclined to swagger like a rock star), and his misbegotten creation (who was, of course, not called Frankenstein) has never walked in the highly exaggerated, hugely inefficient manner this move suggests. So, not only is it named after the wrong guy, it just didn’t happen, at least not in the film versions I’ve seen (and Mary Shelley certainly doesn’t go on about it). That said, it’s a deceptively effective exercise. </p><p>If you have recently had hip or lower back problems, or you are recovering from injury, talk with a medical professional before attempting this move.</p><h2 id="how-do-i-do-it">How do I do it?</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/XS4-MMl1ccU?start=1" allowfullscreen></iframe></div></div><ul><li><strong>Stand tall, arms straight in front of you, palms down.</strong></li><li><strong>Begin to walk forward, swinging one leg high to create a 90-degree angle with your body. Your foot should be close to the hand on the same side. </strong></li><li><strong>With the next step, do the same thing with the other leg.</strong></li><li><strong>Continue for 20 steps, changing direction if space is limited. Repeat two or three times. </strong></li></ul><h2 id="i-did-the-frankenstein-walk-for-a-week-and-this-is-what-i-learned">I did the Frankenstein walk for a week and this is what I learned</h2><p>With most of these moves, I begin with decent-to-abysmal form and get better over the week. This one I could do from day one. That did severely limit the learning experience, so I focused on adding to my steps and using the move as a warm-up or even a respite from sitting at my desk — for which it was excellent. However, I work from home, so please think hard before you try this in an office, where other people will certainly see you and may call security. Just go to a park.</p><p>Although there is not much technique involved, there are a couple of things to watch for. First, don’t overdo it. Only raise your leg as high as you comfortably can — you don’t need to kick your own hand. If you are flexible enough to do so, you still don’t have to inflict damage on yourself. Also, don’t arch your back or lean forward when doing the exercise. Maintain a straight back throughout.</p><h3 class="article-body__section" id="section-this-one-s-a-keeper"><span>This one’s a keeper</span></h3><p>I liked this move from the start, and not just because I could do it with relative ease. I enjoyed it because I immediately felt its benefits. After a long period at my desk, it quickly activated and stretched my quads, hamstrings and glutes, and eased lower back tightness (it’s all connected, folks). And it’s also a decent cardio workout. After 50 high steps on day one, I was breathing hard. This one gets the heart pumping and the blood flowing, which also made it very useful as a warm-up before a run. </p><p>In the days that followed, I simply upped my steps, noticing it became easier to raise my leg higher. After each effort, I felt invigorated, which was the dynamic aspect of the move doing its thing. Such stretching before exercise has been shown to increase <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC6370952/" target="_blank" rel="nofollow">hamstring flexibility and reduce stiffness</a>. It can also lower the risk of joint <a href="https://www.health.harvard.edu/healthy-aging-and-longevity/the-importance-of-stretching" target="_blank" rel="nofollow">strain, pain and muscle damage</a>.</p><p>By the end of the week, I had stopped counting steps. I merely kept at it until I began to feel a little foolish. I did the move indoors, turning when I had to, but I feel you can do this one on the spot, without going forward at all. I also tried doing it without raising my arms, and it can be done, though raised arms help with balance and give your legs something to aim for, or aim past. After a few days, I was able to raise my legs higher than my hands, which was a great and pleasant surprise. Some coaches suggest that, once you are comfortable with the basic move, you can raise your arm to touch your opposite foot and extend your other arm behind you. I did not feel this added much, but you may get a kick out of it.</p><p>This is a move I can endorse without hesitation or caveat. It’s fairly easy to do it well; it works, and at no point did I feel I was about to be chased by villagers carrying torches and pitchforks, which is always a bonus during exercise. I confess to occasionally thinking I was in a military parade in one of those places where everyone has to look up at a smiling dictator, but I wasn’t wearing a huge hat, so the moment always passed. Do try this one, but take it one step at a time.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4dAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4dAX.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/according-to-a-personal-trainer-this-exercise-is-100-times-more-effective-than-crunches-i-tried-it-and-was-humbled" target="_blank">According to a personal trainer, this exercise is 100 times more effective than crunches. I tried it and was humbled</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[ Forget sit-ups and crunches: I did the gymnast plank for a week, and my core still hasn’t forgiven me ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/forget-sit-ups-and-crunches-i-did-the-gymnast-plank-for-a-week-and-my-core-still-hasnt-forgiven-me</link>
                                                                            <description>
                            <![CDATA[ Forget everything you thought you knew about the plank, as the gymnast plank is about to change it. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">cXBEuBuWbHVjD4s4Fc5PkP</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/m3Z3VMWuHVAVsYLcLeYVpP-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 30 Jun 2026 06:00: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/m3Z3VMWuHVAVsYLcLeYVpP-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman performing a plank]]></media:description>                                                            <media:text><![CDATA[a photo of a woman performing a plank]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman performing a plank]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/m3Z3VMWuHVAVsYLcLeYVpP-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Forget everything you thought you knew about the plank, as the gymnast plank is about to change it. This killer variation blasts your core and posterior chain (the group of muscles that run along the back of your body) and is a serious challenge for anyone looking to up the ante in their ab workouts. </p><p>As always, I decided to practice what I preach, and I added the move to my pre-run warm-up for a week. My core still hasn’t forgiven me, and while I’m definitely no gymnast, read on to find out why I recommend adding this move to your workout routine. </p><p>As a gentle reminder, if you’re a complete beginner, you’re pregnant or postpartum, or you’re recovering from a specific injury, this might not be the right move for you and your body. Always check in with a qualified professional before trying something new. </p><h2 id="what-is-the-gymnast-plank">What is the gymnast plank? </h2><p>In a traditional plank, you’ll focus on keeping your spine completely flat, but a gymnast plank forces you to do the opposite. In this move, you’ll actively round your upper back and tuck your pelvis while balancing on your elbows and pointed feet. It’s a challenging progression of the forearm plank and has several benefits. </p><p>You won’t need any additional equipment for this exercise, just your bodyweight, but using one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> can help keep things comfortable. </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/MwNPvAnHSVI" allowfullscreen></iframe></div></div><p>Here’s how to do a gymnast plank with good form: </p><ul><li>Start in a standard forearm plank position, with your forearms shoulder-width apart.</li><li>From here, squeeze your glutes and scoop your abs to tuck your tailbone under. Your lower back should flatten out and your pelvis should tilt.</li><li>Drive your elbows into the floor and think about rounding your upper back like a cat — this is a move called scapular protraction.</li><li>Keep your legs closed and your toes pointed. Extend your knees completely.</li><li>Keep squeezing your core, bracing as hard as you can.</li><li>Hold the move for 3 to 4 sets of 15-30 seconds rather than trying to hold this exercise as long as you would a standard bodyweight plank.</li></ul><p>Your body should stay in this hollow position for the entire hold. If you notice your hips dropping to the floor or your neck and shoulders slouching, stop and reset. This is an advanced move, so if you’re a beginner, stick with a traditional forearm plank to build strength in your abs first.</p><h2 id="what-are-the-benefits-5">What are the benefits? </h2><p>This exercise is tough, and you’ll probably need to work up to holding it for the full 30 seconds. That said, when you do, you’ll be getting a fantastic ab workout. As well as your deep transverse abdominis muscles, which have to fire to keep you stable in this move, the ‘scooping’ element of the gymnast plank will also blast the outer ‘rectus abdominis’ or six-pack muscles. This exceeds the muscular tension generated by a regular plank.</p><p>You’ll also be building scapular stability and shoulder strength in this move, which can translate to other exercises, whether you’re a gymnast or not. To hold the position, you’ll have to aggressively push the floor away and round your upper back. Holding this position strengthens your shoulders, building a great foundation for exercises like push-ups and overhead lifts. </p><p>Finally, if you spend a lot of time sitting down, you’ll probably have tight hip flexors. As well as increasing your risk of injury, tight hip flexors can pull the pelvis into an anterior tilt, where the lower back arches. This exercise requires you to do the exact opposite and teaches you to engage the glutes and lower abs together to pull the pelvis back into a neutral position. </p><h2 id="i-added-the-gymnast-plank-to-my-routine-for-a-week-here-s-what-i-learned">I added the gymnast plank to my routine for a week — here’s what I learned </h2><p>I haven’t practiced gymnastics since gym class in high school, but I’m a marathon runner who spends most of her week sitting down behind a desk, so if I didn’t have tight hip flexors, it would be a miracle. I really struggled getting to grips with this move at first, and had to really focus on scooping my abs and squeezing my glutes to correct the desk hunch posture many of us have adopted. </p><p>Another noticeable difference with this plank variation is holding on pointed toes. Again, I don’t worry too much about my toes in workouts, as I’m not a gymnast, but I found the pressure on my feet was a lot. This did ease over the course of the week. </p><p>After seven days, I was able to hold for a full 30 seconds, but the core shake was intense and this is one challenge I’m glad is over. I actually enjoyed the stretch in my shoulders and this move was a real eye-opener at how much sitting down all day is affecting my body. I’ll be keeping it in my ab workouts, and I promise I’ll never moan about a standard forearm plank ever again. Be warned, this one is tricky! </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-Xp4dAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4dAX.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/according-to-a-personal-trainer-this-exercise-is-100-times-more-effective-than-crunches-i-tried-it-and-was-humbled" target="_blank">According to a personal trainer, this exercise is 100 times more effective than crunches. I tried it and was humbled</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[ After 60, this is the 10-minute routine I use with my clients to stay strong, mobile and independent ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/after-60-this-is-the-10-minute-routine-i-use-with-my-clients-to-stay-strong-mobile-and-independent</link>
                                                                            <description>
                            <![CDATA[ These five moves can help you build strong, mobile joints and muscles as you get older, and they avoid high-impact movement. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wsgZgXWCszaqHeVoNy63uK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/xuqf4mhcJ9vXHhUiauNBWe-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 29 Jun 2026 05:00:00 +0000</pubDate>                                                                                                                                                                                                                                <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/xuqf4mhcJ9vXHhUiauNBWe-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Image left, writer Sam posing in mirror in workout gear, image right, older female performing bridge pose on yoga mat during exercise]]></media:description>                                                            <media:text><![CDATA[Image left, writer Sam posing in mirror in workout gear, image right, older female performing bridge pose on yoga mat during exercise]]></media:text>
                                <media:title type="plain"><![CDATA[Image left, writer Sam posing in mirror in workout gear, image right, older female performing bridge pose on yoga mat during exercise]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/xuqf4mhcJ9vXHhUiauNBWe-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The best exercises for strength and mobility aren't ones that look fancy on social media; the ones I love are simple, repeatable and scaleable, which means they're effective and can be performed at any age.</p><p>These five combo moves only require one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats</a>, and, if you want to add one, a dumbbell. </p><p>I train clients of all ages, and I'm seeing a real uplift in people over 50 taking far more notice of mobility training, longevity practices and anti-aging routines. It's about steering away from what might take off on TikTok and focusing on <a href="https://www.tomsguide.com/features/what-is-functional-training">functional fitness</a> instead.</p><p>While stretching can give you some flexibility benefits and feel good short-term, I strongly recommend looking at your mobility as you get older, using a range of movement and strengthening exercises, as this will help keep your joints and muscles robust to withstand muscle atrophy, bone density loss, or injury.</p><p>I'm sharing my go-to exercises below, plus some 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, I recommend seeking advice before starting these exercises.</em></p><h3 class="article-body__section" id="section-watch-10-minute-mobility-routine"><span>Watch: 10-minute mobility routine</span></h3><p><strong>The routine:</strong> Perform each exercise for<strong> 60 seconds</strong>, take a brief rest, then repeat for a <strong>second round</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/DaA17OMKRJF/" 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-what-are-the-benefits"><span>What are the benefits?</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:2121px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pmJdiWCB6Bj3CZcWGbsX2Q" name="GettyImages-841336384 (1)" alt="a senior woman doing a stretch" src="https://cdn.mos.cms.futurecdn.net/pmJdiWCB6Bj3CZcWGbsX2Q.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 Images/Silke Woweries)</span></figcaption></figure><p>Each of these exercises focuses on a different benefit, so let's break it down briefly, move-by-move. </p><div><blockquote><p>Each of these exercises focuses on a different benefit.</p></blockquote></div><p><strong>Shoulder raises: </strong>Using a light dumbbell, begin in a seated or kneeling position with your arm by your side. Start by arcing the dumbbell in a sweeping position to an overhead position, moving laterally. Then, lower the dumbbell in front of you until it almost reaches your thigh. Repeat in reverse by raising the dumbbell overhead in front of you, then lowering it to the side. </p><p>This primarily works the lateral and frontal heads of the shoulders (your deltoids). You'll also recruit your core muscles to stabilize your torso as you move, plus recruitment of the upper back and chest. For a more strength-focused exercise, you would lift heavier weights closer to failure, but this is a mobility exercise, so lift lighter and focus on maximizing your range of motion.</p><p><strong>Bear squat x downward dog combo</strong>: This short "flow" combines two reps of a bear squat, two forward leans, then two downward dogs. It's great for mobilizing your wrists and ankles and works the quads hard in the kneeling position, then stretching the back of the body in the downward dog position, including your lower back and hamstrings. </p><p>Start in a tabletop position; it's important to stack your shoulders directly over your wrists with your hips over your knees. Tuck your toes, squeeze your core and lift your knees to hover just above the mat. Moving horizontally, sit your hips back, return to center (twice), then do the same moving forward over your wrists (twice). From here, lift your hips up and back into downward dog (you guessed it, twice). </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><p><strong>Reverse tabletop sweeps</strong>: It doesn't look like much, but your hips and spine will love you for this move, as you stretch out your entire body and help gently mobilize the spine. If you have a back or shoulder injury, check with a qualified expert before trying this move.</p><p>Start seated with your knees bent and feet planted. Place your left hand just behind your left hip. Press your hips upward toward the ceiling as you sweep your right hand up and back behind you, coming into a backbend. Squeeze your glutes to protect your back. Lower your hips to the ground and repeat on the other side.</p><p><strong>Spinal rolls with wide seat</strong>: Again, your spine will love you for this, as a spinal roll provides a gentle massage along your back; by engaging your core, you can also control the momentum of the roll, slowing it down to really feel the exercise. The wide seat with reach will stretch the hamstrings and groin and you might also feel this along your mid to upper back.</p><p>Start on your back and perform some rock and rolls up and down your spine with your hands lightly placed behind your head and your legs extended. See if you can lift your legs up and behind you as you roll back, then, as you roll forward, come to a seated position with your legs wide. Reach forward with your hands, then roll back again. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:8192px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AdgehcXSdbfiyEzUsMrneN" name="shutterstock_2670474609" alt="a woman doing a single leg glute bridge" src="https://cdn.mos.cms.futurecdn.net/AdgehcXSdbfiyEzUsMrneN.jpg" mos="" align="middle" fullscreen="" width="8192" height="4608" 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>Glute bridge with leg lift</strong>: This move combines hip extension with glute activation and is a great strengthening exercise if you'd like to add load. For a mobility focus, simply draw your hips upward until you create a straight line between your shoulders and knees and squeeze your glutes to protect your back. </p><p>Press down through your heels, and move your feet slightly further away from your butt to engage the hamstrings more. From here, lift one leg into the air, then place it down and repeat with the other leg. Raise your hands overhead or keep them by your sides for support. </p><p>As you lift, curl your spine away from the mat, starting from your lower back; do the reverse on the way down.</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/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’m 47 and stronger and more flexible than ever': This personal trainer shares her quick 20-20-20-20 abs workout to sculpt a strong, stable core ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-47-and-stronger-and-more-flexible-than-ever-this-personal-trainer-shares-her-quick-20-20-20-20-abs-workout-to-sculpt-a-strong-stable-core</link>
                                                                            <description>
                            <![CDATA[ This simple, bodyweight core workout blasts your abs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BpWcPyKNazNCj24Co5WnLJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PHbd2bJ5GTZyRZWqtXbtTg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 28 Jun 2026 10: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/PHbd2bJ5GTZyRZWqtXbtTg-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[middle aged woman on yoga mat]]></media:description>                                                            <media:text><![CDATA[middle aged woman on yoga mat]]></media:text>
                                <media:title type="plain"><![CDATA[middle aged woman on yoga mat]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PHbd2bJ5GTZyRZWqtXbtTg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>We all know how important it is to build a strong and stable core, but after 45, this becomes less an aesthetic goal and more of a fundamental requirement. Starting in our mid-40s, the human body naturally starts to lose lean muscle mass, and bone density begins to decrease. A strong core is the single most effective way to protect the spine and countermeasure the effects of aging. </p><p>Yet if you’re a complete beginner, or you’re returning to exercise following an extended break, it can be tricky to know where to start. Luckily, you’ve landed in the right place. Below, we’ve shared the workout of 47-year-old personal trainer <a href="https://www.instagram.com/tulumtrainer/?g=5" target="_blank" rel="nofollow">Kate Nolte</a>, who specializes in helping women build strength and mobility. Read on to find out more. </p><p>As a reminder, if you’re currently recovering from a specific injury, this might not be the right workout for you and your body. Always check with a qualified professional before trying something new. </p><h2 id="what-is-the-workout-2">What is the workout? </h2><p>You won’t need any additional equipment for this workout, just one of the <a href="https://www.tomsguide.com/best-picks/best-yoga-mats">best yoga mats</a> to keep things slightly more comfortable. The sequence is simple — you do 20 reps of each of the four exercises, for two rounds. Take a short break between sets to reset if you need. </p><p><strong>Here are the exercises: </strong></p><ul><li><strong>Reverse curl, 20 reps:</strong> Think about engaging your core and lifting your legs from your midsection, rather than using the momentum from your legs to swing them up towards the ceiling. Keep the move slow and controlled to really feel the benefits in your core.</li><li><strong>Toe touches, 20 reps:</strong> Start with your arms and legs extended away from you on the mat. Using your core, lift your head, neck and shoulders off the floor, keeping your arms extended behind you. At the same time, lift one leg and reach your arms to touch your toe. It doesn’t matter if they don’t actually touch; reach as close as you can.</li><li><strong>Heel taps, 20 reps:</strong> bend both knees and press your feet into your exercise mat. Crunch your head, neck and shoulders off the floor with your arms extended by your sides. Reach your left hand to your left ankle, then your right hand to your right, keeping your torso lifted the entire time.</li><li><strong>Knee tuck extend, 20 reps:</strong> Lift your head, neck and shoulders off the mat, supporting your head with your hands. Lift your knees into tabletop position, keeping a 90-degree bend in your knee. Bring both knees in toward your torso, crunching from your abs, then extend both legs out away from you. Don’t let your head and neck drop down to the mat.</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/DX_5vDGDnXf/" target="_blank">A post shared by Kate Nolte | Coach & Trainer (@tulumtrainer)</a></p><p>A photo posted by  on </p></blockquote></div><h2 id="what-are-the-benefits-6">What are the benefits? </h2><p>This bodyweight circuit blasts all the major muscles in your core, including the deep transverse abdominis muscles, which are responsible for stabilizing and protecting your lower back. </p><p>Strengthening these muscles is essential for your overall balance, but can also halt the onset of age-related lower back pain. Your deep core muscles can absorb the daily impact and stabilize your pelvis, so your spine isn’t strained when you do everyday activities like carrying a heavy bag of groceries or lifting something down from a shelf. </p><p>Talking of functional strength, working on the muscles in your midsection can protect you from injury during everyday activities, helping preserve your functional power, and reducing muscle loss in your core. </p><p>This quick workout can also help boost your mobility and flexibility. When your core muscles atrophy, your bodyweight shifts, which can lead to poor mechanical tracking. Working on your core can help improve your alignment and protect against conditions like osteoarthritis. </p><p>So what are you waiting for? Unroll your exercise mat and give this workout a try. Let us know in the comments how you got on. </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-Xp4dAX"></div>                            </div>                            <script src="https://kwizly.com/embed/Xp4dAX.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/according-to-a-personal-trainer-this-exercise-is-100-times-more-effective-than-crunches-i-tried-it-and-was-humbled" target="_blank">According to a personal trainer, this exercise is 100 times more effective than crunches. I tried it and was humbled</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[ I'm a personal trainer who works with clients over 50 — these are the 3 mobility exercises I never skip ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-who-works-with-clients-over-50-these-are-the-3-mobility-exercises-i-never-skip</link>
                                                                            <description>
                            <![CDATA[ These three moves are low-impact and help your joints and muscles stay strong and mobile; we teach you how to do them. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ndboKUaAFfCw6j6iQgq4Tc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/r9EbytpDFfnu77oFtgdF9E-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 28 Jun 2026 05:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Jul 2026 09:49:18 +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/r9EbytpDFfnu77oFtgdF9E-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a senior man in exercise kit]]></media:description>                                                            <media:text><![CDATA[a senior man in exercise kit]]></media:text>
                                <media:title type="plain"><![CDATA[a senior man in exercise kit]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/r9EbytpDFfnu77oFtgdF9E-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'd call mobility training my happy place; my bread and butter. It's what makes me really smile because I see it make an enormous difference in people's lives, whether that's because they love exercise and want to continue doing it, or they just want to stay strong, balanced and mobile later in life.</p><p>Mobility is an entity unto itself, and if you don't enjoy it much, the good news is that microdosing your routine can still provide real benefits for strength, control and stability. In other words, even <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> with 5, 10, or 15-minute routines can still give you results, as long as you're consistent and intentional. </p><p>Think of the three moves below as your anti-aging weapons for helping unstick your hips, lubricate your joints and get you moving more freely. They're low-impact exercises and can be made more beginner-friendly or challenging, and you can work with your bodyweight or with weights. </p><p>Below, I share my ride-and-die three moves I never skip with clients. Here's why.</p><h2 id="watch-3-exercises-you-can-try-for-better-mobility-anywhere">Watch: 3 exercises you can try for better mobility 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/DaHtzkTjK4k/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Do you know what "mobility" <em>truly</em> means? It sounds age-related, I think, but actually, there's a real focus on longevity, mindful movement, yoga and Pilates right now, which all feed into the mobility world.</p><p>Improving mobility isn't just about being able to put one foot in front of the other without straining something, or getting up off the couch to make a drink, although, yes, that absolutely matters. </p><p>It's about being intentionally dynamic by moving the joints through their range of motion in a variety of patterns, alongside strengthening and loading muscles using resistance. Think strength, control and motion without age-related limitation. A quick example is performing shoulder rolls and similar exercises before an upper-body workout.</p><p>The more you get your body moving throughout the day, the more you train yourself to balance and stabilize; the more you load your bones and muscles to maintain strength rather than atrophying or losing density.</p><p>Your joints, ligaments and fascia (in particular) respond well to low-impact movement, which can be achieved through a challenging yet consistent mobility routine.</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><p><strong>The routine:</strong> 3-4 sets, 8-10 reps per move. For more of a <a href="https://www.tomsguide.com/wellness/workouts/i-teach-mobility-for-a-living-this-5-move-flow-builds-strength-stability-and-control-all-over">mobility flow</a>, try 60 seconds per move for a few rounds.</p><div class="product"><a data-dimension112="f890e248-fcca-49e3-801c-5c08fe310b31" data-action="Deal Block" data-label="You pay for annual membership rather than an upfront cost at Whoop. There are three price tiers: One is $199/£169 per year, Peak is $239/£229 and Life is $359/£349 per year. This deal gets you Peak for less than the cost of One." data-dimension48="You pay for annual membership rather than an upfront cost at Whoop. There are three price tiers: One is $199/£169 per year, Peak is $239/£229 and Life is $359/£349 per year. This deal gets you Peak for less than the cost of One." data-dimension25="$189" href="https://www.amazon.com/WHOOP-Peak-Membership-Personalized-Healthspan/dp/B0DY2SWV16/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1080px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="zck7zzY5Lnp2nHEYm9AsDh" name="Whoop deal block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zck7zzY5Lnp2nHEYm9AsDh.jpg" mos="" align="middle" fullscreen="" width="1080" height="1080" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>You pay for annual membership rather than an upfront cost at Whoop. There are three price tiers: One is $199/£169 per year, Peak is $239/£229 and Life is $359/£349 per year. This deal gets you Peak for less than the cost of One.<a class="view-deal button" href="https://www.amazon.com/WHOOP-Peak-Membership-Personalized-Healthspan/dp/B0DY2SWV16/" target="_blank" rel="nofollow" data-dimension112="f890e248-fcca-49e3-801c-5c08fe310b31" data-action="Deal Block" data-label="You pay for annual membership rather than an upfront cost at Whoop. There are three price tiers: One is $199/£169 per year, Peak is $239/£229 and Life is $359/£349 per year. This deal gets you Peak for less than the cost of One." data-dimension48="You pay for annual membership rather than an upfront cost at Whoop. There are three price tiers: One is $199/£169 per year, Peak is $239/£229 and Life is $359/£349 per year. This deal gets you Peak for less than the cost of One." data-dimension25="$189">View Deal</a></p></div><ul><li><strong>Overhead squat to block: </strong>Stand with your feet wider than shoulder-width apart with a block positioned on a setting suitable for you (I use high) behind you. Raise your arms into the air, holding a weight if you want to, and engage your core. Sit your hips back and lower into a squat, keeping your feet planted, back straight and chest lifted. Try to avoid letting your arms travel forward. Touch the block with your butt, then drive up through your legs to stand.</li><li><strong>Single-leg hip circles: </strong>In a tabletop position, stack your wrists under your shoulders and knees under your hips. Draw your stomach in and press through your hands to create space. For an extra challenge, place a dumbbell or similar on the right. With control, lift your right leg, keep the knee bent and circle the leg around the dumbbell, changing direction every rep. Remember to switch over to your left side. Aim to keep both hands pressed down; raise your hands onto blocks or come onto your fingertips if needed.</li><li><strong>Leg liftovers:</strong> Sit with your back straight and legs extended wide. You can rest your back against a wall or couch for extra support. Sit tall through your spine and place your hands lightly behind your head, drawing your elbows back. Position a dumbbell or similar to the right of your right leg. Practice lifting your leg up and over the dumbbell in both directions. Remember to switch to the other side. Play with height settings depending on your ability.</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="Q9zMbwtQ5K3A226GF368u3" name="GettyImages-2247267956(1) squat mobility" alt="Three mature women outdoors performing squats on the grass near the ocean at sunset" src="https://cdn.mos.cms.futurecdn.net/Q9zMbwtQ5K3A226GF368u3.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>I use these moves all the time with clients. Depending on their ability, programs and individual preferences, we mix them up to add weights, bands, or reps and sets, or we might try variations on the above to keep things interesting. </p><p>Here are some benefits:</p><p><strong>Overhead squat to block:</strong> Squatting improves lower-body strength, but your ability to squat low will depend on a mix of thoracic, hip, knee and ankle mobility. This exercise allows you to practice using one of the toughest squat variations (the overhead squat) for engaging the upper body and shoulders. This will test, and hopefully improve, your ability to keep your chest lifted and shoulders back as you sit the hips back and try to reach the block with your butt. </p><p><strong>Single-leg hip circles:</strong> This is one of my favorite exercises to give my dad for his stiff hips. You don't have to use a dumbbell, but having an object to circle will keep you accountable; don't worry how many times you knock it over, as that's part of the fun. Aim to create large circles in both directions, which makes space around the pelvis and warms the muscles and joints of the lower body.</p><p><strong>Leg lift-overs: </strong>These are killer on hip flexors that run along the front of your hips, plus the thighs, core and upper body. Focus on knitting your shoulder blades together and sit tall to help engage your upper back and open your chest. As soon as you start hunching, you're losing form, so be mindful and use a wall for support if needed. Again, the dumbbell is optional but helpful. </p><p>If you have tight hamstrings, I recommend sitting on the edge of a book or yoga brick to help tilt the pelvis and take some pressure off. An extra challenge would include looping a resistance band just above your knees.</p><div><blockquote><p>I use these moves all the time with clients. Depending on their ability, programs and individual preferences, we mix them up to add weights, bands, or reps and sets, or we might try variations on the above to keep things interesting. </p></blockquote></div><p>Before you consider adding weight in the form of kettlebells, dumbbells, or even water bottles, focus on the fullest range of movement you can during every rep. For example, I would never add weight to a squat until my client can reach adequate squat depth; if the squat is the issue, we'd work on form or variations first.</p><p>Control each of these movements and make the most of them, even if that means reducing the sets or reps slightly. And remember, as cheesy as it sounds, mobility really is a journey; you don't notice the progress day to day, but over time, you'll see huge benefits in how your body moves, adapts and responds. So take a moment to assess what did and didn't work, then try again next time.</p><p>As with any exercise routine, find length through your spine and draw your shoulders down away from your ears. Engage your core (here's 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>to get you going) and always keep your chest proud.</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><h3 class="article-body__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/according-to-a-personal-trainer-this-exercise-is-100-times-more-effective-than-crunches-i-tried-it-and-was-humbled" target="_blank">According to a personal trainer, this exercise is 100 times more effective than crunches. I tried it and was humbled</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[ I’m a personal trainer — this mobility move opens up the chest and spine so much better than stretching ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/im-a-personal-trainer-this-mobility-move-opens-up-the-chest-and-spine-so-much-better-than-stretching</link>
                                                                            <description>
                            <![CDATA[ So many of my personal training clients suffer from rounded posture, tight pecs, and poor shoulder range of motion. Here's how to fix it ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qnkto4YZoejRjEjyFheEVD</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YpUtbHcyZkFqL2fBjtAr7L-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 27 Jun 2026 07: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/YpUtbHcyZkFqL2fBjtAr7L-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[a photo of a woman doing a back stretch ]]></media:description>                                                            <media:text><![CDATA[a photo of a woman doing a back stretch ]]></media:text>
                                <media:title type="plain"><![CDATA[a photo of a woman doing a back stretch ]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YpUtbHcyZkFqL2fBjtAr7L-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>So many of my personal training clients suffer from rounded posture, tight pecs, and poor shoulder range of motion. Desk jobs are usually the major culprit, made worse by lots of bench presses and not enough mobility work. </p><p>Sometimes I’ll give my clients a few common chest and back stretches, but there’s actually one move I prefer over stretching: quadruped thoracic rotations. This exercise opens up the entire upper body, reducing overall stiffness and enhancing spinal alignment. It’s a movement that almost anyone could benefit from, but especially those who are stuck behind a computer all day.</p><p>Below, I’ll go over how to do quadruped thoracic rotations, their benefits, and common form errors to keep in mind. Roll out your <a href="https://www.tomsguide.com/best-picks/best-yoga-mats"><u>yoga mat</u></a> and give them a try for yourself. </p><h2 id="how-to-do-quadruped-thoracic-rotations">How to do quadruped thoracic rotations</h2><p>Consult with your doctor before trying any new activity. This exercise can be done by most people, but beginners should consider meeting with a trainer for guidance on proper form. </p><p>You’ll just need a yoga mat to do quadruped thoracic rotations. If you have sore knees, you can place a rolled-up towel or pillow underneath them for extra cushioning. </p><p>Start by doing 5-8 rotations on each side, 3-4 times a week. As your upper body mobility improves, increase to 10 reps on each side. Gradually work your way up to doing this exercise for at least one set, 5-7 times a week.</p><p>Quadruped thoracic rotations make a great addition to your warm-up routine. They can also be done after work or long periods of sitting. </p><p>Here’s how to do them:</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/QWwiOHexU8I" allowfullscreen></iframe></div></div><ul><li>Come to all fours on the mat.</li><li>Sink your hips back towards your heels.</li><li>Place your right hand behind the back of your head.</li><li>Place your left hand underneath your right shoulder.</li><li>Rotate your torso and lift your right elbow towards the ceiling.</li><li>Slowly return to the starting position.</li><li>Continue for 5-10 reps, then repeat on the other side.</li></ul><h2 id="benefits-of-quadruped-thoracic-rotations">Benefits of quadruped thoracic rotations</h2><p>Most of our daily life is forward, from sitting on the computer to texting on our phones. All that time spent in front of us can tighten certain muscles and weaken others. In turn, this can degrade posture, cause chronic pain and stiffness, and make us more susceptible to overuse injuries. </p><p>Quadruped thoracic rotations open up the chest, shoulders, and back in a transverse plane of motion. Sitting the hips back towards the heels stabilizes the often vulnerable lower back area, while the “rotation” increases mobility and flexibility throughout the thoracic spine. </p><p>Additionally, the “quadruped” formation engages deep core muscles like the transverse abdominis and internal obliques, which help to stabilize and support the pelvis and spinal column. </p><p>Done regularly, quadruped thoracic rotations can counteract the negative effects of sitting for long periods, promoting better range of motion in the spine and enhancing overall posture.</p><h2 id="common-quadruped-thoracic-rotation-form-errors">Common quadruped thoracic rotation form errors</h2><p>Quadruped thoracic rotations aren’t hard to learn, but there are a few common mistakes that can make the exercise less effective. </p><h3 class="article-body__section" id="section-not-setting-the-hips-back-towards-the-heels"><span>Not setting the hips back towards the heels</span></h3><p>While this may seem like a minor part of the movement, making sure you set your hips back is super important. This portion of the exercise stabilizes and protects the lower back as you rotate the torso.</p><p>If injury or mobility concerns prevent you from sitting back onto your heels, try <a href="https://youtu.be/_71vJV2fZng?si=xuu43AShwYGdXNK5"><u>seated thoracic rotations instead</u></a>. Sit tall in a chair, engage your core muscles, cross your arms across your chest, and gently twist your torso to each side.</p><h3 class="article-body__section" id="section-moving-too-fast"><span>Moving too fast</span></h3><p>I see it all the time: clients use quadruped thoracic rotations as a warm-up, then speed through the exercise so that they can get to the main part of their workout. But going too quickly can mean that you’re relying on momentum, not reaching the ends of your range of motion, and even setting yourself up for injury through uncontrolled movement. </p><p>Rotate through your spine slowly, and hold at the ends of your range for at least 2-3 seconds. Towards the end of each set, you can even challenge yourself to go a bit further or hold for an additional second. </p><h3 class="article-body__section" id="section-over-rotating"><span>Over rotating </span></h3><p>You may not get a lot of rotational range at first, and often, beginners will try to compensate for that by shifting their hips instead of keeping them square to the mat. However, that twists the lower back, not the thoracic spine. If your lower back is tight or you’re dealing with disc issues, this can lead to pain or a worsening of your condition.  </p><p>When performing quadruped thoracic rotations, focus less on the degree of rotation and more on the “stretch” you feel. Even if you’re not moving that much, if you feel the chest, shoulders, and back opening up, you’re getting the benefits of 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/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 ditched my usual ab routine for these 3 dumbbell exercises for a week — here's what happened to my core ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/wellness/workouts/i-swapped-my-usual-ab-routine-for-these-3-dumbbell-exercises-for-a-week-heres-what-happened</link>
                                                                            <description>
                            <![CDATA[ I swapped my usual ab routines for three new dumbbell exercises and tested them for one week; here's what happened to my core. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">T9QiL4JNfLRDWqVwcibmNY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/AswcfqpFjqi7MwbKDinGfc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 27 Jun 2026 04:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Jul 2026 09:50:15 +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/AswcfqpFjqi7MwbKDinGfc-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[woman with defined abs holding a dumbbell]]></media:description>                                                            <media:text><![CDATA[woman with defined abs holding a dumbbell]]></media:text>
                                <media:title type="plain"><![CDATA[woman with defined abs holding a dumbbell]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/AswcfqpFjqi7MwbKDinGfc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>None of us enjoy repeating the same old routine on rinse-and-repeat, do we? Yes, you need consistency to achieve goals like building strength, growing muscle, losing fat, or getting faster at running, but some variety is also key. That could mean variations of exercises you love or adding in new moves to your program.</p><p>I've been getting bored with my program recently, so I decided to roll out one of the<a href="https://www.tomsguide.com/best-picks/best-yoga-mats"> best yoga mats </a>and add three new dumbbell abs exercises to my routine. Here's what happened when I swapped moves like sit-ups, bear planks and lateral shoot-throughs for something a little spicier. </p><p><em>If you plan to try the routine below, I recommend seeking advice from your trainer or physician first if you are working with an injury or illness, or you're pre- or postnatal.</em></p><h3 class="article-body__section" id="section-watch-dumbbell-abs-routine"><span>Watch: Dumbbell abs routine</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/DaFKMHAEsNO/" target="_blank">A post shared by Tom's Guide Fitness (@tomsguidefitness)</a></p><p>A photo posted by  on </p></blockquote></div><p>Here's the routine structure for you to follow from the gym or at home:</p><ul><li><strong>50s on/ 10s off: 2 rounds </strong></li><li><strong>45s on/ 15s off: 2 rounds</strong></li><li><strong>40s on/ 20s off: 2 rounds</strong></li></ul><p>I'd opt for a medium-heavy weight so that the last few reps of every exercise feel like a real push. If you're cruising through rather than achieving around 4-8 solid reps per side per move during your shorter working sets, I would recommend adding load. While they're not the most comfortable, if you don't have a few sets of weights to work with, I'd consider a set of the <a href="https://www.tomsguide.com/wellness/fitness/best-adjustable-dumbbells">best adjustable dumbbells</a>.</p><p><strong>Here are the moves step-by-step: </strong></p><ul><li><strong>Marching dumbbell pass-under: </strong>Stand with your feet hip-width apart and hold a dumbbell in your right hand. Brace your core, drawing your navel in while standing tall and tucking your pelvis slightly under. Lift your left knee as if marching, then pass the dumbbell under your raised leg to the opposite hand and return to standing. Raise your right knee, then pass the dumbbell under your leg again from left to right. Continue for as many reps as you can.</li><li><strong>Modified dumbbell windmill: </strong>Start half-kneeling with your left leg forward and your right knee resting on the mat. Sit tall through your spine and engage your core. Hold a dumbbell in your left hand and press it overhead so that your weight is directly over your shoulder. Look up at the dumbbell, then slowly hinge forward at your hips and lower your right forearm to the ground, keeping the weight punched overhead. Pause, then drive upward. Remember to switch sides after a few reps to work both sides evenly.</li><li><strong>Inchworms with dumbbell plank pass-through: </strong>Place a dumbbell to the front left of your mat. Stand with your feet hip-width apart. Slowly roll down your spine and walk your hands forward into a high plank, zipping your stomach in and pressing away with your hands. Grip the dumbbell in your right hand, then drag the weight over to the right, just behind your wrist. Repeat to the left, then walk yourself to the back of your mat and slowly roll up to stand. Repeat for max reps.</li></ul><div class="product"><a data-dimension112="f59c5779-1cc8-4c50-bba1-fcc87852e94d" data-action="Deal Block" data-label="These popular Flybird dumbbells give you up to 58lbs of weight per dumbbell and five options to tailer the amount of weight to your skill level." data-dimension48="These popular Flybird dumbbells give you up to 58lbs of weight per dumbbell and five options to tailer the amount of weight to your skill level." data-dimension25="$149" href="https://www.amazon.com/FLYBIRD-Adjustable-Dumbbell-Anti-Slip-Multiweight/dp/B0FMK937PZ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LYXiuvg6yEPeno98ezdTcU" name="Flybird Adjustable Dumbbell review.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/LYXiuvg6yEPeno98ezdTcU.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>These popular Flybird dumbbells give you up to 58lbs of weight per dumbbell and five options to tailer the amount of weight to your skill level. <a class="view-deal button" href="https://www.amazon.com/FLYBIRD-Adjustable-Dumbbell-Anti-Slip-Multiweight/dp/B0FMK937PZ" target="_blank" rel="nofollow" data-dimension112="f59c5779-1cc8-4c50-bba1-fcc87852e94d" data-action="Deal Block" data-label="These popular Flybird dumbbells give you up to 58lbs of weight per dumbbell and five options to tailer the amount of weight to your skill level." data-dimension48="These popular Flybird dumbbells give you up to 58lbs of weight per dumbbell and five options to tailer the amount of weight to your skill level." data-dimension25="$149">View Deal</a></p></div><h3 class="article-body__section" id="section-tips-for-this-routine"><span>Tips for this routine</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:6871px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4c66hj7wys3HyLoJiwrU2H" name="dumbbell abs" alt="a photo of a woman holding a dumbbell with abs" src="https://cdn.mos.cms.futurecdn.net/4c66hj7wys3HyLoJiwrU2H.jpg" mos="" align="middle" fullscreen="" width="6871" height="3865" 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>At all times move with full control over the weights; if your weights control you, it means your form could be harmed, so focus on lots of core engagement and smooth reps rather than hitting more reps. As always, quality over quantity.</p><p>Don't be afraid to go heavy with some of these moves, as you can always scale back if you need to. I would use the first round to count reps per side for each move (remember, the timings change!), then try to hit the same number on the second round. Aim to complete a few more reps on those longer rounds. </p><p>This workout hits your deep stabilizing core muscles that act as your body's natural corset to protect your spine and pelvis, but also the abs and obliques and other muscle groups like your hips, quads, shoulders and arms. </p><p>If you have tight hamstrings, bring more bend to your knees during the inchworms, but try not to rock from side to side; keep your hips square and stable and allow all the work to go through your core to draw the weight from side to side. You can always place your knees down if you prefer.</p><h3 class="article-body__section" id="section-here-s-what-happened-when-i-tried-it-for-one-week"><span>Here's what happened when I tried it for one week</span></h3><p>I tacked this onto existing workouts for one week, gradually increasing my dumbbell weight, and man, I was humbled. These abs exercises don't look like much, but they are killer when you get your reps and load correct, which is why I recommend a practice round or two before you hit the workout for real, so you know how each move feels and what you're working with.</p><p>London is pretty hot right now, so I found I worked up a sweat even quicker than normal, but regardless, I felt this one in my core muscles for days. After a week, I was using slightly heavier weights and still loving it. However, my core didn't look any different, which I expected, of course, as core definition is pretty complicated. </p><p>If a toned midsection is your goal, there are factors like genetics, lifestyle, diet and overall energy expenditure, including how you train, to think about. Check out this handy guide on<a href="https://www.tomsguide.com/wellness/fitness/can-you-lose-fat-and-build-muscle-at-the-same-time-heres-the-scoop-on-body-recomposition"> body recomposition </a>if that's your goal. If it's not, this workout, over time, will get you a stronger, more stable core.</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/no-not-planks-or-sit-ups-heres-the-one-abs-exercise-you-need-for-elite-core-strength-and-stability-without-weights" target="_blank">No, not planks or sit-ups — here's the one abs exercise you need for elite core strength and stability without weights</a></li><li><a href="https://www.tomsguide.com/wellness/fitness/childs-pose-is-fine-but-here-are-the-4-mobility-exercises-i-use-when-my-spine-and-shoulders-get-stiff-from-desk-sitting" target="_blank">Child's pose is fine, but here are the 4 mobility exercises I use when my spine and shoulders get stiff from desk sitting</a></li><li><a href="https://www.tomsguide.com/wellness/workouts/im-a-35-year-old-personal-trainer-i-swear-by-these-3-moves-to-build-and-maintain-muscle-and-strength-as-you-age" target="_blank">I'm a 35-year-old personal trainer trying to build (and maintain) muscle and strength as I age: 3 essential moves I swear by</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <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-8">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="low" 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-3">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-9">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-10">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-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: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-12">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-13">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-4">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-14">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-5">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-15">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-6">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-16">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-17">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-18">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-2">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-19">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-20">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-21">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-22">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-7">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-23">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-24">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>
            </channel>
</rss>