<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.techradar.com/uk/rss/reviews/gadgets" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from TechRadar UK in Reviews ]]></title>
                <link>https://www.techradar.com</link>
        <description><![CDATA[  ]]></description>
                                    <lastBuildDate>Wed, 04 Nov 2026 16:03:03 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Dyson W1 PencilWash review: a terrific lightweight power mop with marathon runtime ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-dyson-w1-pencilwash-30-second-review"><span>Dyson W1 PencilWash: 30-second review</span></h2><p>Dyson has updated its lightweight wet floor cleaner with a redesigned floorhead and extra-long battery life, without increasing the price. The second-generation PencilWash takes the best features of the original — its lightweight build, ease of use, and effective wet cleaning — and adds thoughtful features that add up to make it an even better everyday cleaning tool.</p><p>The cleaning head’s plush-feeling roller is now sprinkled with stiffer bristles to tackle welded-on stains effectively without scuffing your floor. The upgraded clean water tank is larger and fully detachable, and emptying soiled water is less messy too. After mopping, your floors will be dry and ready to walk on almost immediately.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sQD2xRELmM9DDgbFfffoQc" name="pwash-2" alt="Dyson W1 PencilWash microfiber roller" src="https://cdn.mos.cms.futurecdn.net/sQD2xRELmM9DDgbFfffoQc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Look closely and you'll see rows of small red bristles embedded in the W1 PencilWash's upgraded microfiber roller </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s an excellent package, but before buying, note that Dyson has now cut the price of the <a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review">original PencilWash</a> to just $199.99 / £179 in the US and UK respectively. That’s great value, and it could be all you need if you want to spruce up a relatively small home.</p><p>For me, the only real drawback of the W1 PencilWash was that hair tended to get wrapped around one of the wheels underneath the floor head, rather than sticking to the roller and being scraped off by Dyson’s new metal comb.</p><p>Note that the PencilWash isn’t a vacuum cleaner, and has no suction. If you’re looking for a slim and lightweight vacuum, take a look at the <a href="https://www.techradar.com/home/vacuums/dyson-pencilvac-fluffycones-review">Dyson PencilVac</a> instead.</p><h2 class="article-body__section" id="section-dyson-w1-pencilwash-price-and-availability"><span>Dyson W1 PencilWash: price and availability</span></h2><ul><li><strong>Went on sale in October 2026</strong></li><li><strong>List price $349.99 / £299.99 in the US and UK</strong></li><li><strong>Not yet available in Australia, but likely to be AU$549</strong></li></ul><p>Dyson announced the W1 PencilWash at its Dyson Unveiled event in September 2026, and the product launched globally in October the same year — nine months after the original PencilWash.</p><p>It has a list price of $349.99 / £299.99, which is the same as the original PencilWash at launch, though you may also be able to find it cheaper (for example, Dyson is offering a $100 discount in its US store at the time of writing). The W1 PencilWash isn’t yet available in Australia, but I would expect it to be AU$549 when it arrives. </p><p>That's relatively expensive for a wet-only floor cleaner, and there are several excellent wet-and-dry vacuums available for about the same price. For comparison, the <a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review">Bissell Crosswave HydroScrub</a> wet/dry floor cleaner is $369.99 (about £280 / AU$540), while the <a href="https://www.techradar.com/home/vacuums/shark-hydrovac-cordless-review">Shark HydroVac Cordless WD201 / WD210 </a>is $359.99 / £329.99 / AU$399.99.</p><p>What you're paying for here is the light weight and compact design, which will be better suited to apartments and other small homes than a bulky wet-dry cleaner.</p><ul><li><strong>Value score: 4/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-design"><span>Dyson W1 PencilWash: design</span></h2><ul><li><strong>New stiffer bristles in microfiber roller</strong></li><li><strong>Clean water tank is larger and fully removable</strong></li><li><strong>Emptying waste water is less messy</strong></li></ul><p>At first glance, the W1 PencilWash looks very similar to its predecessor, with a slender handle (this time colored indigo rather than copper), and one of Dyson’s Submarine floor heads. A tank at the back of the floorhead dispenses water onto a microfiber roller, and a squeegee-like blade squeezes dirty water out, and dispenses it into a separate tank inside. </p><p>On closer inspection, however, there are a few significant differences. The most obvious change is the floorhead’s microfiber roller, which is now scattered with stiffer fibers to more effectively scrub away stubborn dirt. There is also a new metal comb designed to detangle and scrape hair off the roller. (Both of these features are borrowed from the bulkier <a href="https://www.techradar.com/home/vacuums/dyson-clean-wash-hygiene-review">Dyson Clean+Wash Hygiene</a> wet cleaner, which launched at the start of 2026.)</p><p>The head disassembles into more parts, as you can see below. Most significantly, the clean water tank is now fully removable, making it easier to fill at the sink, and has a significantly larger capacity so you can keep cleaning for longer. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794971260-etb6hjh9x *, #fv-chart-1793794971260-etb6hjh9x *:before, #fv-chart-1793794971260-etb6hjh9x *:after, #fv-chart-1793794971260-etb6hjh9x-slideshow *, #fv-chart-1793794971260-etb6hjh9x-slideshow *:before, #fv-chart-1793794971260-etb6hjh9x-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794971260-etb6hjh9x, #fv-chart-1793794971260-etb6hjh9x-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794971260-etb6hjh9x { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn.disabled, #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794971260-etb6hjh9x .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1793794971260-etb6hjh9x .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1793794971260-etb6hjh9x .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1793794971260-etb6hjh9x .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1793794971260-etb6hjh9x .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794971260-etb6hjh9x .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-expand-btn, #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-expand-btn:hover, #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-pie-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-bar-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-cluster, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-label-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-benchmark-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dropdown-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-subhead, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-header, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-vs, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dials-grid, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dial-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794971260-etb6hjh9x .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Dyson PencilWash floorhead comparison",  "description": "Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:51.260Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:51.260Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Dyson PencilWash floorhead comparison","subhead":"Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg","label1":"Dyson W1 PencilWash","label2":"Original Dyson PencilWash","showTitle":true,"image1Alt":"Dyson W1 PencilWash floorhead disassembled","image2Alt":"Original Dyson PencilWash floorhead disassembled","showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794971260-etb6hjh9x" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Dyson PencilWash floorhead comparison</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794971260-etb6hjh9x-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" alt="Original Dyson PencilWash floorhead disassembled" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" alt="Dyson W1 PencilWash floorhead disassembled" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Dyson W1 PencilWash</div><div class="fv-image-compare-label fv-image-compare-label-right">Original Dyson PencilWash</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794971260-etb6hjh9x', false); });      } else {        initialize('fv-chart-1793794971260-etb6hjh9x', false);      }    })();      </script></div><p>The dirty water collection tank has also been reworked, and is now much less prone to spills during emptying. It’s still wise to hold the whole floorhead over the sink when removing the cassette, but I found the process much less messy than the original PencilWash. </p><p>Note that the W1 PencilWash has different docks in the US and UK. The UK model, which I tested here, has a charging stand that holds the PencilWash’s handle, and a separate holder for the floorhead.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vgAneprjqtkQzQgiH4uGid" name="pwash-5" alt="Dyson W1 PencilWash handle in charging stand, head in drying stand, and bottle of floor cleaner in kitchen" src="https://cdn.mos.cms.futurecdn.net/vgAneprjqtkQzQgiH4uGid-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The UK version of the W1 PencilWash has a charging stand for the handle, and a separate holder for the floorhead. The US model has a magnetic charging stand called the Dok that holds both together. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The US model has a magnetic charging stand called the Dok, which holds the whole PencilWash with its floorhead attached. This seems slightly more convenient, and will save a few seconds during cleaning.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-performance"><span>Dyson W1 PencilWash: performance</span></h2><ul><li><strong>Excellent cleaning on dried-on spills</strong></li><li><strong>Much easier to fill and empty than previous model</strong></li><li><strong>Battery lasted over two hours in testing</strong></li><li><strong>Hair wrapped around wheel underneath floorhead</strong></li></ul><p>In use, the W1 PencilWash feels very much like its predecessor. The handle is light in the hand, and its plush microfiber roller propels it forward so you barely need to apply any force when cleaning. </p><p>I tested it with a variety of stains and spills, including dried-on juice, ketchup, dried toothpaste (to simulate spills in a bathroom), flour, and hair.</p><p>You can use the PencilWash with plain water, or a cleaning fluid. I tested it with Dyson 02 Probiotic Hard Floor Cleaning Solution (which is specifically recommended for the company’s wet floor cleaners) diluted according to the instructions on the bottle.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Hjor9q5RkL5tu94BBdqTnd-1920-80.jpg" alt="Dyson W1 PencilWash head with bottle of Dyson probiotic floor cleaner" /><figcaption>Dyson's probiotic floor cleaning solution is specifically designed for use with its wet floor cleaners, but you can use a different brand, or just plain water instead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d9GVNK7pcXhJepAJqA3Sid-1920-80.jpg" alt="Dyson W1 PencilWash navigating under chair" /><figcaption>The handle of the W1 PencilWash can lie almost flat, making it easy to maneuver under low furniture<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/B9FvfmVjwf3cReiiveFy6c-1920-80.jpg" alt="Person removing cassette from Dyson W1 PencilWash" /><figcaption>The reworked floorhead has an easily removable cassette for simple cleanup<small role="credit">Future</small></figcaption></figure></figure><p>The W1 PencilWash fared well in all my cleaning tests, clearing up flour, dried juice, and ketchup on a single pass. Congealed toothpaste proved the toughest challenge, taking about four passes to completely remove, but I was impressed that the roller system removed all the mess and deposited it in the waste tank, leaving no streaks when I continued cleaning the rest of the floor. The new stiffer bristles work well to scrub away dirt that would normally require you to get down on your hands and knees to remove, and I was pleased to note their tougher fibers aren’t rigid enough to damage your flooring.</p><p>The floorhead is fully articulated for easy maneuvering, and the handle can be laid almost flat to clean under low items of furniture. I was able to clean right between the legs of my dining chairs, which have a crossbar just a few inches above the ground. The roller cleans very close to furniture and baseboards as well, leaving a gap only half an inch wide.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794941594-ok0pc5o30 *, #fv-chart-1793794941594-ok0pc5o30 *:before, #fv-chart-1793794941594-ok0pc5o30 *:after, #fv-chart-1793794941594-ok0pc5o30-slideshow *, #fv-chart-1793794941594-ok0pc5o30-slideshow *:before, #fv-chart-1793794941594-ok0pc5o30-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794941594-ok0pc5o30, #fv-chart-1793794941594-ok0pc5o30-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794941594-ok0pc5o30 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn.disabled, #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1793794941594-ok0pc5o30 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1793794941594-ok0pc5o30 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794941594-ok0pc5o30 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn, #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn:hover, #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-pie-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-bar-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-cluster, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-label-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-benchmark-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dropdown-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-subhead, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-header, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-vs, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dials-grid, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dial-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794941594-ok0pc5o30 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Ketchup cleaning test",  "description": "Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:21.594Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:21.594Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Ketchup cleaning test","subhead":"Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg","label1":"Before cleaning ketchup","label2":"After cleaning ketchup","image1Alt":"Ketchup on floor before cleaning with Dyson W1 PencilWash","image2Alt":"Clean floor with all ketchup removed by Dyson W1 PencilWash","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794941594-ok0pc5o30" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Ketchup cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794941594-ok0pc5o30-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" alt="Clean floor with all ketchup removed by Dyson W1 PencilWash" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" alt="Ketchup on floor before cleaning with Dyson W1 PencilWash" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning ketchup</div><div class="fv-image-compare-label fv-image-compare-label-right">After cleaning ketchup</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794941594-ok0pc5o30', false); });      } else {        initialize('fv-chart-1793794941594-ok0pc5o30', false);      }    })();      </script></div><p>Your floors will dry exceptionally quickly as well; after a pass on the regular cleaning mode, my laminate flooring was dry within 10 seconds.</p><p>The new metal comb wasn’t quite such a success. It does catch hair, and the roller needs less hand-cleaning after use, but quite a lot of hair became caught in one of the small wheels on the bottom of the floorhead during my tests. This didn’t seem to affect performance, and I didn’t even realize while maneuvering the cleaner, but it was wrapped tightly around the tiny axel and had to be cut free with scissors. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793795199133-m1bqm59zo *, #fv-chart-1793795199133-m1bqm59zo *:before, #fv-chart-1793795199133-m1bqm59zo *:after, #fv-chart-1793795199133-m1bqm59zo-slideshow *, #fv-chart-1793795199133-m1bqm59zo-slideshow *:before, #fv-chart-1793795199133-m1bqm59zo-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793795199133-m1bqm59zo, #fv-chart-1793795199133-m1bqm59zo-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793795199133-m1bqm59zo { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn.disabled, #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793795199133-m1bqm59zo .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1793795199133-m1bqm59zo .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1793795199133-m1bqm59zo .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1793795199133-m1bqm59zo .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1793795199133-m1bqm59zo .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793795199133-m1bqm59zo .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-expand-btn, #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-expand-btn:hover, #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-pie-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-bar-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-cluster, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-label-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-chart-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-benchmark-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dropdown-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-carousel-nav-btn, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-subhead, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-header, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-vs, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dials-grid, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dial-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793795199133-m1bqm59zo .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Toothpaste cleaning test",  "description": "Before and after cleaning toothpaste off floor with Dyson W1 PencilWash",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:26:39.133Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:26:39.133Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Toothpaste cleaning test","subhead":"Before and after cleaning toothpaste off floor with Dyson W1 PencilWash","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg","label1":"Before cleaning toothpaste","label2":"During cleaning toothpaste","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793795199133-m1bqm59zo" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Toothpaste cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793795199133-m1bqm59zo-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning toothpaste off floor with Dyson W1 PencilWash" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning toothpaste</div><div class="fv-image-compare-label fv-image-compare-label-right">During cleaning toothpaste</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793795199133-m1bqm59zo', false); });      } else {        initialize('fv-chart-1793795199133-m1bqm59zo', false);      }    })();      </script></div><p>It’s worth noting that the microfiber roller takes quite a long time to air-dry. I placed it near a dehumidifier to speed up the process, but it still took two days before it was dry enough for me to feel comfortable storing it. </p><p>The big surprise was the battery life. Dyson’s specifications claim that the W1 PencilWash can run for 45 minutes on a single charge (up from 30 minutes for the original PencilWash), but during my tests it ran for an astonishing two hours and 13 minutes — and that was during active mopping, not just running the roller without resistance. I have contacted Dyson’s press office to ask whether that’s expected performance, but it’s safe to say that you shouldn’t have any problems cleaning even large homes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cp2xidV3sN6Dfu3ndqiN2b-1920-80.jpg" alt="Hair caught in wheel under Dyson W1 PencilWash" /><figcaption>Hair became caught in one of the wheels on the bottom of the floorhead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7xYVZMquCn6wFC2TC2mLid-1920-80.jpg" alt="Dyson W1 PencilWash with bottle of cleaner and bowl of dirty waste water" /><figcaption>The dirty water container is now easier to empty, with less potential for spillage<small role="credit">Future</small></figcaption></figure></figure><p>Overall, I’m impressed with the W1 PencilWash. Dyson has clearly taken on board feedback from the first model (the detachable clean water tank and scrubbing bristles are highlights) while keeping the fundamentals the same. If you have a large home with lots of hard flooring, or live with pets or children, then this new model would be a great choice. If, on the other hand, your home is relatively small and you want something for everyday maintenance, the original PencilWash might be the smarter choice at its newly reduced price.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-dyson-w1-pencilwash"><span>Should you buy the Dyson W1 PencilWash?</span></h2><div ><table><caption>Dyson W1 PencilWash score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Same price as the original PencilWash at launch. Relatively pricey for a wet floor cleaner; you're paying for light weight and compact design.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Redesigned floor head is a huge improvement — especially new water tanks.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Great cleaning performance on stubborn stains and remarkable battery life, but hair can get caught in wheels.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h3 id="buy-it-if">Buy it if</h3><div class="product"><p><strong>You have lots of hard floors</strong></p><p>With its incredible battery life, the W1 PencilWash can mop your entire home on a single charge.</p></div><div class="product"><p><strong>You want to clean little and often</strong></p><p>The W1 PencilWash is quick to use and floors dry rapidly after cleaning, so it's very convenient for daily mopping.</p></div><h3 id="don-39-t-buy-it-if">Don't buy it if</h3><div class="product"><p><strong>You have long hair</strong></p><p>Although the metal comb is designed to catch hair, I found it tended to get caught on one of the wheels under the floorhead.</p></div><div class="product"><p><strong>You have unsealed floors</strong></p><p>Neither version of the PencilWash is suitable for unsealed flooring.</p></div><h2 class="article-body__section" id="section-dyson-w1-pencilwash-also-consider"><span>Dyson W1 PencilWash: also consider</span></h2><p>If the Dyson W1 PencilWash isn't the right wet floor cleaner for you, here are two other options to think about.</p><div class="product"><a data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1152px;"><p class="vanilla-image-block" style="padding-top:150.00%;"><img id="BdvAcWUWhAQjvyf6ScYryG" name="Pencilwash" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/BdvAcWUWhAQjvyf6ScYryG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1152" height="1728" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Dyson PencilWash</strong></p><p>The original PencilWash is still a great option, and has received a serious price cut since the launch of the W1. Well worth investigating if you have a small home.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review" data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" data-dimension25=""><strong>Dyson PencilWash review</strong></a></p></div><div class="product"><a data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="CLGDzsfyNfUeHKcYwBXt3c" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CLGDzsfyNfUeHKcYwBXt3c-1920-80.png" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Bissell CrossWave HydroScrub</strong></p><p>If you want a full wet and dry cleaner, check out Bissell. The CrossWave HydroScrub isn't small, but it's a great all-rounder and about the same price as the W1 PencilWash.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review" data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" data-dimension25=""><strong>Bissell CrossWave HydroScrub review</strong></a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-dyson-w1-pencilwash"><span>How I tested the Dyson W1 PencilWash</span></h2><p>I tested the Dyson W1 PencilWash on sealed laminate flooring, using Dyson 02 Probiotic Hard Floor Cleaning Solution and tap water. I used it on common household stains including dried juice, dried toothpaste, ketchup, flour, and human hair.</p><p>I emptied the floor head cassette, and cleaned the tank, comb, and microfiber roller using plain water.</p><p>I fully charged the W1, then used it to clean the floors, moving it backwards and forwards as in normal use, and timed how long it took for the battery to run flat.</p><p><em>First reviewed November 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/vacuums/dyson-w1-pencilwash-review</link>
                                                                            <description>
                            <![CDATA[ Dyson has upgraded its super-slender wet floor cleaner with extra scrubbing power, easier emptying, a bigger water tank, and incredible battery life. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">AmDoLsFAuKpra2wqrjyomk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/6MSRQzJdBDFt43buEr45jd-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 04 Nov 2026 16:03:03 +0000</pubDate>                                                                                                                                <updated>Wed, 04 Nov 2026 22:16:22 +0000</updated>
                                                                                                                                            <category><![CDATA[Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                <author><![CDATA[ catherine.ellis@futurenet.com (Cat Ellis) ]]></author>                    <dc:creator><![CDATA[ Cat Ellis ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/gxZz6rCoNR6sXhqL34MvML-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Cat is TechRadar&amp;#39;s Homes Editor, covering smart home tech, kitchen appliances, vacuums, haircare and more. She&amp;#39;s been a tech journalist for 15 years, having worked on print magazines including PC Plus and PC Format, and is a&lt;a href=&quot;https://sca.coffee/&quot;&gt; &lt;u&gt;Speciality Coffee Association&lt;/u&gt;&lt;/a&gt; (SCA) certified barista, and holds a professional certificate in security awareness for smart homes.. Whether you want to invest in some smart lights, find your ideal hair styler, or pick the espresso machine of your dreams, she&amp;#39;s the right person to help.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/6MSRQzJdBDFt43buEr45jd-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dyson W1 PencilWash floor head]]></media:description>                                                            <media:text><![CDATA[Dyson W1 PencilWash floor head]]></media:text>
                                <media:title type="plain"><![CDATA[Dyson W1 PencilWash floor head]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/6MSRQzJdBDFt43buEr45jd-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-dyson-w1-pencilwash-30-second-review"><span>Dyson W1 PencilWash: 30-second review</span></h2><p>Dyson has updated its lightweight wet floor cleaner with a redesigned floorhead and extra-long battery life, without increasing the price. The second-generation PencilWash takes the best features of the original — its lightweight build, ease of use, and effective wet cleaning — and adds thoughtful features that add up to make it an even better everyday cleaning tool.</p><p>The cleaning head’s plush-feeling roller is now sprinkled with stiffer bristles to tackle welded-on stains effectively without scuffing your floor. The upgraded clean water tank is larger and fully detachable, and emptying soiled water is less messy too. After mopping, your floors will be dry and ready to walk on almost immediately.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sQD2xRELmM9DDgbFfffoQc" name="pwash-2" alt="Dyson W1 PencilWash microfiber roller" src="https://cdn.mos.cms.futurecdn.net/sQD2xRELmM9DDgbFfffoQc-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Look closely and you'll see rows of small red bristles embedded in the W1 PencilWash's upgraded microfiber roller </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It’s an excellent package, but before buying, note that Dyson has now cut the price of the <a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review">original PencilWash</a> to just $199.99 / £179 in the US and UK respectively. That’s great value, and it could be all you need if you want to spruce up a relatively small home.</p><p>For me, the only real drawback of the W1 PencilWash was that hair tended to get wrapped around one of the wheels underneath the floor head, rather than sticking to the roller and being scraped off by Dyson’s new metal comb.</p><p>Note that the PencilWash isn’t a vacuum cleaner, and has no suction. If you’re looking for a slim and lightweight vacuum, take a look at the <a href="https://www.techradar.com/home/vacuums/dyson-pencilvac-fluffycones-review">Dyson PencilVac</a> instead.</p><h2 class="article-body__section" id="section-dyson-w1-pencilwash-price-and-availability"><span>Dyson W1 PencilWash: price and availability</span></h2><ul><li><strong>Went on sale in October 2026</strong></li><li><strong>List price $349.99 / £299.99 in the US and UK</strong></li><li><strong>Not yet available in Australia, but likely to be AU$549</strong></li></ul><p>Dyson announced the W1 PencilWash at its Dyson Unveiled event in September 2026, and the product launched globally in October the same year — nine months after the original PencilWash.</p><p>It has a list price of $349.99 / £299.99, which is the same as the original PencilWash at launch, though you may also be able to find it cheaper (for example, Dyson is offering a $100 discount in its US store at the time of writing). The W1 PencilWash isn’t yet available in Australia, but I would expect it to be AU$549 when it arrives. </p><p>That's relatively expensive for a wet-only floor cleaner, and there are several excellent wet-and-dry vacuums available for about the same price. For comparison, the <a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review">Bissell Crosswave HydroScrub</a> wet/dry floor cleaner is $369.99 (about £280 / AU$540), while the <a href="https://www.techradar.com/home/vacuums/shark-hydrovac-cordless-review">Shark HydroVac Cordless WD201 / WD210 </a>is $359.99 / £329.99 / AU$399.99.</p><p>What you're paying for here is the light weight and compact design, which will be better suited to apartments and other small homes than a bulky wet-dry cleaner.</p><ul><li><strong>Value score: 4/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-design"><span>Dyson W1 PencilWash: design</span></h2><ul><li><strong>New stiffer bristles in microfiber roller</strong></li><li><strong>Clean water tank is larger and fully removable</strong></li><li><strong>Emptying waste water is less messy</strong></li></ul><p>At first glance, the W1 PencilWash looks very similar to its predecessor, with a slender handle (this time colored indigo rather than copper), and one of Dyson’s Submarine floor heads. A tank at the back of the floorhead dispenses water onto a microfiber roller, and a squeegee-like blade squeezes dirty water out, and dispenses it into a separate tank inside. </p><p>On closer inspection, however, there are a few significant differences. The most obvious change is the floorhead’s microfiber roller, which is now scattered with stiffer fibers to more effectively scrub away stubborn dirt. There is also a new metal comb designed to detangle and scrape hair off the roller. (Both of these features are borrowed from the bulkier <a href="https://www.techradar.com/home/vacuums/dyson-clean-wash-hygiene-review">Dyson Clean+Wash Hygiene</a> wet cleaner, which launched at the start of 2026.)</p><p>The head disassembles into more parts, as you can see below. Most significantly, the clean water tank is now fully removable, making it easier to fill at the sink, and has a significantly larger capacity so you can keep cleaning for longer. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794971260-etb6hjh9x *, #fv-chart-1793794971260-etb6hjh9x *:before, #fv-chart-1793794971260-etb6hjh9x *:after, #fv-chart-1793794971260-etb6hjh9x-slideshow *, #fv-chart-1793794971260-etb6hjh9x-slideshow *:before, #fv-chart-1793794971260-etb6hjh9x-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794971260-etb6hjh9x, #fv-chart-1793794971260-etb6hjh9x-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794971260-etb6hjh9x { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794971260-etb6hjh9x .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn.disabled, #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1793794971260-etb6hjh9x-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794971260-etb6hjh9x .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1793794971260-etb6hjh9x .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1793794971260-etb6hjh9x .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1793794971260-etb6hjh9x .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1793794971260-etb6hjh9x .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794971260-etb6hjh9x.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794971260-etb6hjh9x .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-expand-btn, #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-expand-btn:hover, #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794971260-etb6hjh9x .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-pie-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-bar-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-grouped-product-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-cluster, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-label-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-benchmark-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dropdown-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-chart-subhead, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-header, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-vs, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select-container, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-versus-select, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dials-grid, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-dial-title, #fv-chart-1793794971260-etb6hjh9x.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794971260-etb6hjh9x .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row, #fv-chart-1793794971260-etb6hjh9x .fv-stacked-product, #fv-chart-1793794971260-etb6hjh9x .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-label, #fv-chart-1793794971260-etb6hjh9x .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-container, #fv-chart-1793794971260-etb6hjh9x .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794971260-etb6hjh9x .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794971260-etb6hjh9x .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-logo, #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794971260-etb6hjh9x .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794971260-etb6hjh9x .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794971260-etb6hjh9x.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Dyson PencilWash floorhead comparison",  "description": "Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:51.260Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:51.260Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Dyson PencilWash floorhead comparison","subhead":"Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg","label1":"Dyson W1 PencilWash","label2":"Original Dyson PencilWash","showTitle":true,"image1Alt":"Dyson W1 PencilWash floorhead disassembled","image2Alt":"Original Dyson PencilWash floorhead disassembled","showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794971260-etb6hjh9x" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Dyson PencilWash floorhead comparison</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794971260-etb6hjh9x-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Comparing new Dyson W1 PencilWash and original Dyson PencilWash floorhead components" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/Urdmk8UyxWbwtB63ebLtRE.jpg" alt="Original Dyson PencilWash floorhead disassembled" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/mc6gH3cLrqtDL6uX4jdcid.jpg" alt="Dyson W1 PencilWash floorhead disassembled" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Dyson W1 PencilWash</div><div class="fv-image-compare-label fv-image-compare-label-right">Original Dyson PencilWash</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794971260-etb6hjh9x', false); });      } else {        initialize('fv-chart-1793794971260-etb6hjh9x', false);      }    })();      </script></div><p>The dirty water collection tank has also been reworked, and is now much less prone to spills during emptying. It’s still wise to hold the whole floorhead over the sink when removing the cassette, but I found the process much less messy than the original PencilWash. </p><p>Note that the W1 PencilWash has different docks in the US and UK. The UK model, which I tested here, has a charging stand that holds the PencilWash’s handle, and a separate holder for the floorhead.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vgAneprjqtkQzQgiH4uGid" name="pwash-5" alt="Dyson W1 PencilWash handle in charging stand, head in drying stand, and bottle of floor cleaner in kitchen" src="https://cdn.mos.cms.futurecdn.net/vgAneprjqtkQzQgiH4uGid-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The UK version of the W1 PencilWash has a charging stand for the handle, and a separate holder for the floorhead. The US model has a magnetic charging stand called the Dok that holds both together. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The US model has a magnetic charging stand called the Dok, which holds the whole PencilWash with its floorhead attached. This seems slightly more convenient, and will save a few seconds during cleaning.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h2 class="article-body__section" id="section-dyson-w1-pencilwash-performance"><span>Dyson W1 PencilWash: performance</span></h2><ul><li><strong>Excellent cleaning on dried-on spills</strong></li><li><strong>Much easier to fill and empty than previous model</strong></li><li><strong>Battery lasted over two hours in testing</strong></li><li><strong>Hair wrapped around wheel underneath floorhead</strong></li></ul><p>In use, the W1 PencilWash feels very much like its predecessor. The handle is light in the hand, and its plush microfiber roller propels it forward so you barely need to apply any force when cleaning. </p><p>I tested it with a variety of stains and spills, including dried-on juice, ketchup, dried toothpaste (to simulate spills in a bathroom), flour, and hair.</p><p>You can use the PencilWash with plain water, or a cleaning fluid. I tested it with Dyson 02 Probiotic Hard Floor Cleaning Solution (which is specifically recommended for the company’s wet floor cleaners) diluted according to the instructions on the bottle.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Hjor9q5RkL5tu94BBdqTnd-1920-80.jpg" alt="Dyson W1 PencilWash head with bottle of Dyson probiotic floor cleaner" /><figcaption>Dyson's probiotic floor cleaning solution is specifically designed for use with its wet floor cleaners, but you can use a different brand, or just plain water instead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d9GVNK7pcXhJepAJqA3Sid-1920-80.jpg" alt="Dyson W1 PencilWash navigating under chair" /><figcaption>The handle of the W1 PencilWash can lie almost flat, making it easy to maneuver under low furniture<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/B9FvfmVjwf3cReiiveFy6c-1920-80.jpg" alt="Person removing cassette from Dyson W1 PencilWash" /><figcaption>The reworked floorhead has an easily removable cassette for simple cleanup<small role="credit">Future</small></figcaption></figure></figure><p>The W1 PencilWash fared well in all my cleaning tests, clearing up flour, dried juice, and ketchup on a single pass. Congealed toothpaste proved the toughest challenge, taking about four passes to completely remove, but I was impressed that the roller system removed all the mess and deposited it in the waste tank, leaving no streaks when I continued cleaning the rest of the floor. The new stiffer bristles work well to scrub away dirt that would normally require you to get down on your hands and knees to remove, and I was pleased to note their tougher fibers aren’t rigid enough to damage your flooring.</p><p>The floorhead is fully articulated for easy maneuvering, and the handle can be laid almost flat to clean under low items of furniture. I was able to clean right between the legs of my dining chairs, which have a crossbar just a few inches above the ground. The roller cleans very close to furniture and baseboards as well, leaving a gap only half an inch wide.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793794941594-ok0pc5o30 *, #fv-chart-1793794941594-ok0pc5o30 *:before, #fv-chart-1793794941594-ok0pc5o30 *:after, #fv-chart-1793794941594-ok0pc5o30-slideshow *, #fv-chart-1793794941594-ok0pc5o30-slideshow *:before, #fv-chart-1793794941594-ok0pc5o30-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793794941594-ok0pc5o30, #fv-chart-1793794941594-ok0pc5o30-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794941594-ok0pc5o30 { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30 .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn.disabled, #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1793794941594-ok0pc5o30-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1793794941594-ok0pc5o30 .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1793794941594-ok0pc5o30 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793794941594-ok0pc5o30.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793794941594-ok0pc5o30 .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn, #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-expand-btn:hover, #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-pie-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-bar-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-grouped-product-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-cluster, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-label-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-x-axis-chart-space, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-benchmark-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dropdown-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-carousel-nav-btn, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-chart-subhead, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-header, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-vs, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select-container, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-versus-select, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dials-grid, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-dial-title, #fv-chart-1793794941594-ok0pc5o30.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793794941594-ok0pc5o30 .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row, #fv-chart-1793794941594-ok0pc5o30 .fv-stacked-product, #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-label, #fv-chart-1793794941594-ok0pc5o30 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-container, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-cluster { width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793794941594-ok0pc5o30 .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-label-space { display: none !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-logo, #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-dial-title { font-size: 16px !important; } #fv-chart-1793794941594-ok0pc5o30 .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793794941594-ok0pc5o30.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Ketchup cleaning test",  "description": "Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:22:21.594Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:22:21.594Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Ketchup cleaning test","subhead":"Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg","label1":"Before cleaning ketchup","label2":"After cleaning ketchup","image1Alt":"Ketchup on floor before cleaning with Dyson W1 PencilWash","image2Alt":"Clean floor with all ketchup removed by Dyson W1 PencilWash","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793794941594-ok0pc5o30" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Ketchup cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793794941594-ok0pc5o30-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning up ketchup with Dyson W1 PencilWash floor cleaner" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/fR4tg8HgCqsy5KK2dZX3kE.jpg" alt="Clean floor with all ketchup removed by Dyson W1 PencilWash" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/W2YWWAD2v2xcnrna7pHRHF.jpg" alt="Ketchup on floor before cleaning with Dyson W1 PencilWash" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning ketchup</div><div class="fv-image-compare-label fv-image-compare-label-right">After cleaning ketchup</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793794941594-ok0pc5o30', false); });      } else {        initialize('fv-chart-1793794941594-ok0pc5o30', false);      }    })();      </script></div><p>Your floors will dry exceptionally quickly as well; after a pass on the regular cleaning mode, my laminate flooring was dry within 10 seconds.</p><p>The new metal comb wasn’t quite such a success. It does catch hair, and the roller needs less hand-cleaning after use, but quite a lot of hair became caught in one of the small wheels on the bottom of the floorhead during my tests. This didn’t seem to affect performance, and I didn’t even realize while maneuvering the cleaner, but it was wrapped tightly around the tiny axel and had to be cut free with scissors. </p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1793795199133-m1bqm59zo *, #fv-chart-1793795199133-m1bqm59zo *:before, #fv-chart-1793795199133-m1bqm59zo *:after, #fv-chart-1793795199133-m1bqm59zo-slideshow *, #fv-chart-1793795199133-m1bqm59zo-slideshow *:before, #fv-chart-1793795199133-m1bqm59zo-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1793795199133-m1bqm59zo, #fv-chart-1793795199133-m1bqm59zo-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793795199133-m1bqm59zo { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793795199133-m1bqm59zo .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn.disabled, #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1793795199133-m1bqm59zo-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1793795199133-m1bqm59zo .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1793795199133-m1bqm59zo .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1793795199133-m1bqm59zo .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1793795199133-m1bqm59zo .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1793795199133-m1bqm59zo .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1793795199133-m1bqm59zo.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1793795199133-m1bqm59zo .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label-left { left: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-label-right { right: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-expand-btn, #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-expand-btn:hover, #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; } #fv-chart-1793795199133-m1bqm59zo .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-pie-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-bar-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-grouped-product-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-cluster, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-label-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-x-axis-chart-space, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-benchmark-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dropdown-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-carousel-nav-btn, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-chart-subhead, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-header, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-vs, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select-container, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-versus-select, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-btn, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dials-grid, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-dial-title, #fv-chart-1793795199133-m1bqm59zo.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1793795199133-m1bqm59zo .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row, #fv-chart-1793795199133-m1bqm59zo .fv-stacked-product, #fv-chart-1793795199133-m1bqm59zo .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-label, #fv-chart-1793795199133-m1bqm59zo .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-container, #fv-chart-1793795199133-m1bqm59zo .fv-bar-cluster { width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1793795199133-m1bqm59zo .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-label-space { display: none !important; } #fv-chart-1793795199133-m1bqm59zo .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-title { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-logo, #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1793795199133-m1bqm59zo .fv-dial-title { font-size: 16px !important; } #fv-chart-1793795199133-m1bqm59zo .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1793795199133-m1bqm59zo.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }</style><script type="application/ld+json">{  "@context": "https://schema.org",  "@type": "Dataset",  "name": "Toothpaste cleaning test",  "description": "Before and after cleaning toothpaste off floor with Dyson W1 PencilWash",  "creator": {    "@type": "Organization",    "name": "TechRadar",    "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"  },  "isAccessibleForFree": true,  "dateCreated": "2026-11-04T12:26:39.133Z",  "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized",  "keywords": [    "Image Comparison",    "benchmark",    "comparison",    "performance",    "review",    "TechRadar"  ],  "measurementTechnique": "Performance Benchmarking",  "variableMeasured": []}</script><script type="application/json" class="fv-embed-state" data-version="2">{"version":2,"exportedAt":"2026-11-04T12:26:39.133Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Comparison","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Toothpaste cleaning test","subhead":"Before and after cleaning toothpaste off floor with Dyson W1 PencilWash","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageCompareData":{"image1Url":"https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg","image2Url":"https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg","label1":"Before cleaning toothpaste","label2":"During cleaning toothpaste","showTitle":true,"showSubhead":false}},"slides":[]}</script><div id="fv-chart-1793795199133-m1bqm59zo" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Toothpaste cleaning test</h3><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1793795199133-m1bqm59zo-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Before and after cleaning toothpaste off floor with Dyson W1 PencilWash" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/JJ9SPsCd3iD35VjnYJja8F.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/cBadpRCyPpfoxSTQgqu2FF.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before cleaning toothpaste</div><div class="fv-image-compare-label fv-image-compare-label-right">During cleaning toothpaste</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>      window.iFrameResizer = {        heightCalculationMethod: 'taggedElement'      };    </script>    <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script>    <script>          (function() {            function createChartAnimator() {        return function animateChartWrapper(chartWrapper) {          if (!chartWrapper) return;                    function animateBars(chartElement) {            if (!chartElement) return;            var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');            bars.forEach(function(bar, index) {                bar.style.setProperty('width', '0%', 'important');                bar.style.setProperty('transition', 'none', 'important');                var targetWidth = bar.dataset.targetWidth;                if (targetWidth === undefined) return;                                void bar.offsetWidth;                 var targetMargin = bar.dataset.targetMargin;                var baseMargin = bar.dataset.baseMargin;                if (baseMargin !== undefined) {                    bar.style.setProperty('margin-left', baseMargin + '%', 'important');                }                                setTimeout(function() {                    var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';                    bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');                    bar.style.setProperty('width', targetWidth + '%', 'important');                    if (targetMargin !== undefined && baseMargin !== undefined) {                        bar.style.setProperty('margin-left', targetMargin + '%', 'important');                    }                }, index * 50 + 50);            });          }          function animateLineChart(chartElement) {              if (!chartElement) return;              var lineSvg = chartElement.querySelector('svg');              if (!lineSvg) return;              var paths = lineSvg.querySelectorAll('.riv-line-path');              paths.forEach(function(p, i) {                if (typeof p.getTotalLength === 'function') {                  var len = p.getTotalLength();                  p.style.transition = 'none';                  p.style.strokeDasharray = len;                  p.style.strokeDashoffset = len;                  p.getBoundingClientRect();                  setTimeout(function() {                    p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';                    p.style.strokeDashoffset = '0';                  }, 100);                }              });              var dots = lineSvg.querySelectorAll('.riv-dot');              dots.forEach(function(dot, i) {                dot.style.opacity = '0';                setTimeout(function() {                    dot.style.transition = 'opacity 0.3s ease';                    dot.style.opacity = '1';                }, 500 + i * 10);              });            }          function animateDials(chartElement) {            if (!chartElement) return;            var needles = chartElement.querySelectorAll('.fv-dial-needle');            needles.forEach(function(needle, index) {              var targetAngle = needle.dataset.targetAngle;              var baseAngle = needle.dataset.baseAngle || '-132';              if (targetAngle === undefined) return;              needle.style.setProperty('transition', 'none', 'important');              needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important');              void needle.getBoundingClientRect();              setTimeout(function() {                needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important');                needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important');              }, index * 60 + 50);            });          }            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            charts.forEach(function(chart) {                if (window.getComputedStyle(chart).display === 'none') return;                var chartType = chart.dataset.chartType;                if (chartType === 'Line') {                  animateLineChart(chart);                } else if (chartType !== 'Pie') {                  animateBars(chart);                  animateDials(chart);                }            });        };      }      var fvLocalAnimate = createChartAnimator();      window.fvAnimateCharts = fvLocalAnimate;            function initialize(uniqueId, isSlideshow) {        var root = document.getElementById(uniqueId);        if (!root && !isSlideshow) return;                function setupWrapper(chartWrapper) {            if (!chartWrapper) return;                        /* Responsive mobile view handling */            function checkMobileView() {                var width = chartWrapper.getBoundingClientRect().width;                var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;                                var isMobile;                if (width === 0) {                    isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;                } else {                    isMobile = isMobileDevice || width < 600;                }                                if (isMobile) {                    chartWrapper.classList.add('mobile-view');                } else {                    chartWrapper.classList.remove('mobile-view');                }            }                        checkMobileView();                        if (typeof ResizeObserver !== 'undefined') {                var ro = new ResizeObserver(function() {                    checkMobileView();                });                ro.observe(chartWrapper);            }                        window.addEventListener('resize', checkMobileView);                        var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';            if (labelsOnTop) {                var charts = chartWrapper.querySelectorAll('.fv-chart-item');                var hasVisibleBarChart = false;                charts.forEach(function(c) {                    if (window.getComputedStyle(c).display !== 'none') {                        var cType = c.dataset.chartType;                        if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') {                            hasVisibleBarChart = true;                        }                    }                });                                if (hasVisibleBarChart) {                    chartWrapper.classList.add('labels-on-top');                } else {                    chartWrapper.classList.remove('labels-on-top');                }            } else {                chartWrapper.classList.remove('labels-on-top');            }                        /* Legend interactions */            chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {                var chartId = legend.dataset.chart;                var chart = chartWrapper.querySelector('[id="' + chartId + '"]');                if (!chart) return;                var lines = chart.querySelectorAll('.riv-line-path');                var dots = chart.querySelectorAll('.riv-dot');                var legendItems = legend.querySelectorAll('.riv-legend-item');                legendItems.forEach(function(item) {                    var productName = item.dataset.product;                    var safeProductName = productName.replace(/"/g, '\\"');                    var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');                    var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');                                        if (line && !line.dataset.origStroke) {                        line.dataset.origStroke = line.getAttribute('stroke-width') || '2';                    }                                        var highlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '0.2'; });                        legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                        if (line) {                            line.style.opacity = '1';                            line.setAttribute('stroke-width', '4');                        }                        productDots.forEach(function(d) { d.style.opacity = '1'; });                        item.style.opacity = '1';                    };                    var clearHighlight = function() {                        if (legend.querySelector('.isolated')) return;                        lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                        dots.forEach(function(d) { d.style.opacity = '1'; });                        legendItems.forEach(function(i) { i.style.opacity = '1'; });                    };                    var toggleIsolate = function() {                        var isIsolated = item.classList.contains('isolated');                        legendItems.forEach(function(i) { i.classList.remove('isolated'); });                        if (isIsolated) {                            lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '1'; });                            legendItems.forEach(function(i) { i.style.opacity = '1'; });                        } else {                            item.classList.add('isolated');                            lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });                            dots.forEach(function(d) { d.style.opacity = '0.2'; });                            legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });                            if (line) {                                line.style.opacity = '1';                                line.setAttribute('stroke-width', '4');                            }                            productDots.forEach(function(d) { d.style.opacity = '1'; });                            item.style.opacity = '1';                        }                    };                    item.addEventListener('mouseenter', highlight);                    item.addEventListener('focus', highlight);                    item.addEventListener('mouseleave', clearHighlight);                    item.addEventListener('blur', clearHighlight);                    item.addEventListener('click', toggleIsolate);                                        if (line) {                        line.style.cursor = 'pointer';                        line.addEventListener('mouseenter', highlight);                        line.addEventListener('mouseleave', clearHighlight);                        line.addEventListener('click', toggleIsolate);                    }                });            });                        /* Versus Chart Logic */            var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');            versusCharts.forEach(function(vc) {                var dataJson = vc.getAttribute('data-versus-data');                var leftColor = vc.getAttribute('data-left-color') || '#E53935';                var rightColor = vc.getAttribute('data-right-color') || '#FFB300';                if (!dataJson) return;                                var versusData = JSON.parse(dataJson);                                var leftSelect = vc.querySelector('.fv-select-left');                var rightSelect = vc.querySelector('.fv-select-right');                var rows = vc.querySelectorAll('.fv-versus-row');                                function updateVersusChart() {                    var leftProduct = leftSelect.value;                    var rightProduct = rightSelect.value;                                        leftSelect.style.color = leftColor;                    leftSelect.style.borderColor = leftColor;                    rightSelect.style.color = rightColor;                    rightSelect.style.borderColor = rightColor;                                        rows.forEach(function(row) {                        var index = parseInt(row.getAttribute('data-index'));                        var data = versusData[index];                        if (!data) return;                                                var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;                        var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;                                                var leftIsNum = typeof leftVal === 'number';                        var rightIsNum = typeof rightVal === 'number';                                                var leftNum = leftIsNum ? leftVal : 0;                        var rightNum = rightIsNum ? rightVal : 0;                                                var maxVal = Math.max(leftNum, rightNum, 0.0001);                                                var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;                        var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;                                                var winner = null;                        var pctDiffStr = null;                                                if (leftIsNum && rightIsNum) {                            if (leftNum > rightNum) {                                winner = 'left';                                if (rightNum > 0) {                                    var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            } else if (rightNum > leftNum) {                                winner = 'right';                                if (leftNum > 0) {                                    var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);                                    pctDiffStr = '+' + diff.toLocaleString() + '%';                                }                            }                        }                                                var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));                        var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));                        var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||                                    (data.productData[rightProduct] && data.productData[rightProduct].unit) || '';                                                var leftTextStr = leftDisplay;                        var rightTextStr = rightDisplay;                                                var leftBar = row.querySelector('.fv-versus-bar-left');                        var rightBar = row.querySelector('.fv-versus-bar-right');                        var leftText = row.querySelector('.fv-inside-left');                        var rightText = row.querySelector('.fv-inside-right');                        var labelText = row.querySelector('.fv-versus-label span');                                                var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');                        existingPctDiffs.forEach(function(el) { el.remove(); });                                                if (winner === 'left' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);                        } else if (winner === 'right' && pctDiffStr) {                            var pctSpan = document.createElement('span');                            pctSpan.className = 'fv-versus-pct-diff';                            pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';                            pctSpan.textContent = pctDiffStr;                            if (rightBar) rightBar.appendChild(pctSpan);                        }                                                if (leftBar) {                            leftBar.style.backgroundColor = leftColor;                            leftBar.dataset.targetWidth = leftWidth;                            leftBar.style.setProperty('--target-width', leftWidth + '%');                            leftBar.style.width = leftWidth + '%';                        }                        if (rightBar) {                            rightBar.style.backgroundColor = rightColor;                            rightBar.dataset.targetWidth = rightWidth;                            rightBar.style.setProperty('--target-width', rightWidth + '%');                            rightBar.style.width = rightWidth + '%';                        }                        if (leftText) {                            leftText.innerHTML = leftTextStr;                        }                        if (rightText) {                            rightText.innerHTML = rightTextStr;                        }                        if (labelText) {                            labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');                        }                    });                }                                if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);                if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);            });            /* Bar Commentary Hover Logic */            var barRows = chartWrapper.querySelectorAll('.fv-bar-row');            var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');            var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';                        barRows.forEach(function(row) {                var commentaryEl = row.querySelector('[data-commentary-key]');                if (commentaryEl) {                    var commentaryText = commentaryEl.textContent;                    if (commentaryText && commentaryText.trim().length > 0) {                        row.addEventListener('mouseenter', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = commentaryText;                                globalCaptionEl.classList.add('fv-bar-active-caption');                            }                        });                        row.addEventListener('mouseleave', function() {                            if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {                                globalCaptionEl.innerHTML = fallbackCaptionHtml;                                globalCaptionEl.classList.remove('fv-bar-active-caption');                            }                        });                    }                }            });            /* Carousel & Dropdown Logic */            var charts = chartWrapper.querySelectorAll('.fv-chart-item');            var dropdown = chartWrapper.querySelector('.fv-dropdown-title');            var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');            var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');            var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');            var counter = chartWrapper.querySelector('.fv-carousel-counter');                        var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');            var captionEl = chartWrapper.querySelector('.rv-chart-caption');            var footerContentEl = chartWrapper.querySelector('.fv-footer-content');            var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');            var logoEl = chartWrapper.querySelector('.fv-logo');            if (charts.length > 1 && (dropdown || prevBtn)) {                 var currentChartIndex = 0;                 var titles = [];                 if (dropdown) {                    titles = Array.from(dropdown.options).map(function(o) { return o.text; });                 } else {                    charts.forEach(function(c) {                        titles.push(c.getAttribute('data-title') || '');                    });                 }                                  function showInternalChart(index) {                    if (index < 0) index = charts.length - 1;                    if (index >= charts.length) index = 0;                    currentChartIndex = index;                                        charts.forEach(function(c, i) {                        c.style.display = i === index ? 'block' : 'none';                        if (i === index) {                             var cType = c.dataset.chartType;                             if (cType !== 'Pie') {                                 fvLocalAnimate(chartWrapper);                             }                                                          var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';                             if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {                                 chartWrapper.classList.add('labels-on-top');                             } else {                                 chartWrapper.classList.remove('labels-on-top');                             }                        }                    });                                        if (dropdown) dropdown.value = index;                    if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];                    if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;                                        var activeChart = charts[index];                    if (activeChart) {                        var newSubhead = activeChart.getAttribute('data-subhead');                        var newCaption = activeChart.getAttribute('data-caption');                        var currentChartType = activeChart.getAttribute('data-chart-type');                        var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';                                                if (subheadEl) subheadEl.textContent = newSubhead || '';                        if (captionEl) {                            captionEl.textContent = newCaption || '';                            fallbackCaptionHtml = newCaption || '';                        }                                                if (footerContentEl) {                             if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {                                 footerContentEl.style.display = 'block';                                 if (bottomBarEl) bottomBarEl.style.display = 'flex';                             } else {                                 footerContentEl.style.display = 'none';                                 if (bottomBarEl && !logoEl) {                                     bottomBarEl.style.display = 'none';                                 }                             }                        }                    }                 }                                  if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });                 if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });                 if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });            }                        /* Image Comparison Logic */            var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');            imageCompareWrappers.forEach(function(wrapper) {                var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;                var slider = wrapper.querySelector('.fv-image-compare-slider');                var fgImage = wrapper.querySelector('.fv-image-compare-fg');                var bgImage = wrapper.querySelector('.fv-image-compare-bg');                var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');                var labelRight = wrapper.querySelector('.fv-image-compare-label-right');                var isDragging = false;                var scale = 1;                var panX = 0;                var panY = 0;                var isPanning = false;                var hasPanned = false;                var lastClientX = 0;                var lastClientY = 0;                var initialDistance = null;                var lastCenterX = null;                var lastCenterY = null;                function updateTransform() {                    if (wrapper.classList.contains('fv-image-compare-fullscreen')) {                        inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');                    } else {                        inner.style.removeProperty('transform');                        scale = 1;                        panX = 0;                        panY = 0;                    }                }                function constrainPan() {                    var rect = wrapper.getBoundingClientRect();                    var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);                    var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);                    panX = Math.max(-maxPanX, Math.min(panX, maxPanX));                    panY = Math.max(-maxPanY, Math.min(panY, maxPanY));                }                wrapper.addEventListener('wheel', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    e.preventDefault();                    var zoomSensitivity = 0.005;                    var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);                    var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                        if (newScale === scale) return;                    var rect = wrapper.getBoundingClientRect();                    var mouseX = e.clientX - rect.left - rect.width / 2;                    var mouseY = e.clientY - rect.top - rect.height / 2;                                        var ratio = newScale / scale;                    panX = mouseX - (mouseX - panX) * ratio;                    panY = mouseY - (mouseY - panY) * ratio;                                        scale = newScale;                    constrainPan();                    updateTransform();                }, { passive: false });                wrapper.addEventListener('mousedown', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;                    if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                    isPanning = true;                    hasPanned = false;                    lastClientX = e.clientX;                    lastClientY = e.clientY;                });                window.addEventListener('mousemove', function(e) {                    if (!isPanning) return;                    var dx = e.clientX - lastClientX;                    var dy = e.clientY - lastClientY;                                        if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                        hasPanned = true;                    }                    lastClientX = e.clientX;                    lastClientY = e.clientY;                                        panX += dx;                    panY += dy;                                        constrainPan();                    updateTransform();                });                window.addEventListener('mouseup', function() {                    isPanning = false;                });                wrapper.addEventListener('touchstart', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        initialDistance = Math.sqrt(dx * dx + dy * dy);                                                var rect = wrapper.getBoundingClientRect();                        lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                        lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                hasPanned = true;                    } else if (e.touches.length === 1 && scale > 1) {                        if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;                        isPanning = true;                        hasPanned = false;                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                    }                }, { passive: false });                wrapper.addEventListener('touchmove', function(e) {                    if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;                    if (e.touches.length === 2 && initialDistance !== null) {                        e.preventDefault();                        var dx = e.touches[0].clientX - e.touches[1].clientX;                        var dy = e.touches[0].clientY - e.touches[1].clientY;                        var distance = Math.sqrt(dx * dx + dy * dy);                                                if (initialDistance > 0) {                            var zoomFactor = distance / initialDistance;                            var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));                                                        var rect = wrapper.getBoundingClientRect();                            var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;                            var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;                                                        var ratio = newScale / scale;                            panX = centerX - (centerX - panX) * ratio;                            panY = centerY - (centerY - panY) * ratio;                                                        if (lastCenterX !== null && lastCenterY !== null) {                                panX += (centerX - lastCenterX);                                panY += (centerY - lastCenterY);                            }                                                        scale = newScale;                            lastCenterX = centerX;                            lastCenterY = centerY;                            constrainPan();                            updateTransform();                        }                        initialDistance = distance;                    } else if (e.touches.length === 1 && isPanning) {                        e.preventDefault();                        var dx = e.touches[0].clientX - lastClientX;                        var dy = e.touches[0].clientY - lastClientY;                                                if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {                            hasPanned = true;                        }                        lastClientX = e.touches[0].clientX;                        lastClientY = e.touches[0].clientY;                                                panX += dx;                        panY += dy;                                                constrainPan();                        updateTransform();                    }                }, { passive: false });                wrapper.addEventListener('touchend', function(e) {                    if (e.touches.length < 2) {                        initialDistance = null;                    }                    if (e.touches.length === 0) {                        isPanning = false;                    }                });                function handleMove(clientX) {                    var rect = inner.getBoundingClientRect();                    var x = Math.max(0, Math.min(clientX - rect.left, rect.width));                    var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));                                        if (slider) slider.style.setProperty('left', percent + '%', 'important');                    if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');                                        if (labelLeft) {                        if (percent < 10) {                            labelLeft.style.setProperty('opacity', '0', 'important');                        } else {                            labelLeft.style.setProperty('opacity', '1', 'important');                        }                    }                    if (labelRight) {                        if (percent > 90) {                            labelRight.style.setProperty('opacity', '0', 'important');                        } else {                            labelRight.style.setProperty('opacity', '1', 'important');                        }                    }                }                function onMouseMove(e) {                    if (!isDragging) return;                    handleMove(e.clientX);                }                function onTouchMove(e) {                    if (!isDragging) return;                    e.preventDefault();                    handleMove(e.touches[0].clientX);                }                function stopDragging() {                    isDragging = false;                    window.removeEventListener('mousemove', onMouseMove);                    window.removeEventListener('mouseup', stopDragging);                    window.removeEventListener('touchmove', onTouchMove);                    window.removeEventListener('touchend', stopDragging);                }                if (slider) {                    var startDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('mousemove', onMouseMove);                        window.addEventListener('mouseup', stopDragging);                    };                    var startTouchDrag = function(clientX) {                        isDragging = true;                        handleMove(clientX);                        window.addEventListener('touchmove', onTouchMove, { passive: false });                        window.addEventListener('touchend', stopDragging);                    };                    slider.addEventListener('mousedown', function(e) {                        e.preventDefault();                        startDrag(e.clientX);                    });                    slider.addEventListener('touchstart', function(e) {                        e.preventDefault();                        startTouchDrag(e.touches[0].clientX);                    }, { passive: false });                }                var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');                var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');                if (expandBtn) {                    if (window !== window.parent) {                        expandBtn.style.display = 'none';                    } else {                        expandBtn.addEventListener('click', function(e) {                            e.stopPropagation();                            wrapper.classList.add('fv-image-compare-fullscreen');                            document.body.style.overflow = 'hidden';                                                        if (fgImage && fgImage.dataset.highresSrc) {                                fgImage.src = fgImage.dataset.highresSrc;                                fgImage.removeAttribute('srcset');                                fgImage.removeAttribute('sizes');                            }                            if (bgImage && bgImage.dataset.highresSrc) {                                bgImage.src = bgImage.dataset.highresSrc;                                bgImage.removeAttribute('srcset');                                bgImage.removeAttribute('sizes');                            }                        });                    }                }                if (closeBtn) {                    closeBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    });                }                                document.addEventListener('keydown', function(e) {                    if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {                        wrapper.classList.remove('fv-image-compare-fullscreen');                        document.body.style.overflow = '';                        updateTransform();                    }                });            });            /* Shop The Look Hotspots */            var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');            var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');            var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');            var stlContainer = chartWrapper.querySelector('.fv-stl-container');                        function closeAllModals() {                if (allProductsModal) {                    allProductsModal.classList.remove('is-active');                                        var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');                    items.forEach(function(item) {                        item.classList.remove('is-highlighted');                    });                    if (stlContainer) {                        setTimeout(function() {                            if (!allProductsModal.classList.contains('is-active')) {                                stlContainer.style.minHeight = '';                                if ('parentIFrame' in window) {                                    window.parentIFrame.size();                                }                            }                        }, 300);                    }                }                hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });                if ('parentIFrame' in window) {                    window.parentIFrame.size();                }            }            hotspots.forEach(function(btn) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var hotspotId = btn.getAttribute('data-hotspot-id');                    var isExpanded = btn.getAttribute('aria-expanded') === 'true';                                        closeAllModals();                                        if (!isExpanded && allProductsModal) {                        btn.setAttribute('aria-expanded', 'true');                        allProductsModal.classList.add('is-active');                        var container = btn.closest('.fv-stl-container');                        if (container && container.offsetHeight < 450) {                            container.style.minHeight = '450px';                        }                                                var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');                        if (targetItem) {                            targetItem.classList.add('is-highlighted');                            setTimeout(function() {                                targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });                            }, 100);                        }                                                if ('parentIFrame' in window) {                            window.parentIFrame.size();                        }                    }                });            });            if (shopAllBtn && allProductsModal) {                shopAllBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    closeAllModals();                    allProductsModal.classList.add('is-active');                    var container = shopAllBtn.closest('.fv-stl-container');                    if (container && container.offsetHeight < 450) {                        container.style.minHeight = '450px';                    }                    if ('parentIFrame' in window) {                        window.parentIFrame.size();                    }                });            }            if (allProductsModal) {                var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');                if (closeAllBtn) {                    closeAllBtn.addEventListener('click', function(e) {                        e.stopPropagation();                        closeAllModals();                    });                }            }            chartWrapper.addEventListener('click', function(e) {                if (!e.target.closest('.fv-stl-all-products-content')) {                    closeAllModals();                }            });            if (allProductsModal) {                allProductsModal.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-stl-all-products-content')) {                        closeAllModals();                    }                });            }            /* Image Annotation Logic */            var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');            var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');            var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;            var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');            var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');            var currentIaIndex = -1;            function closeAllIANodes() {                iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });                if (originalCaption) originalCaption.style.display = 'block';                if (dynamicCaption) dynamicCaption.style.display = 'none';            }                        function resetExploreBtn() {                currentIaIndex = -1;                if (exploreBtn) {                    var exploreSpan = exploreBtn.querySelector('span');                    if (exploreSpan) exploreSpan.textContent = 'Explore';                }            }            iaNodes.forEach(function(btn, index) {                btn.addEventListener('click', function(e) {                    e.stopPropagation();                    var isActive = btn.classList.contains('is-active');                    closeAllIANodes();                    if (!isActive) {                        currentIaIndex = index;                        if (exploreBtn) {                            var exploreSpan = exploreBtn.querySelector('span');                            if (exploreSpan) exploreSpan.textContent = 'Next';                        }                        btn.classList.add('is-active');                        if (dynamicCaption) {                            var title = btn.getAttribute('data-title') || '';                            var desc = btn.getAttribute('data-desc') || '';                            dynamicCaption.innerHTML = '';                            var strongTag = document.createElement('strong');                            strongTag.textContent = title;                            dynamicCaption.appendChild(strongTag);                            if (desc) {                                dynamicCaption.appendChild(document.createTextNode(' - ' + desc));                            }                                                        if (originalCaption) originalCaption.style.display = 'none';                            dynamicCaption.style.display = 'block';                                                        if (footerContentEl) footerContentEl.style.display = 'block';                        }                    } else {                        resetExploreBtn();                    }                });            });            if (exploreBtn) {                exploreBtn.addEventListener('click', function(e) {                    e.stopPropagation();                    if (iaNodes.length === 0) return;                                        var nextIndex = currentIaIndex + 1;                    if (nextIndex >= iaNodes.length) {                        closeAllIANodes();                        resetExploreBtn();                    } else {                        currentIaIndex = nextIndex;                        var targetBtn = iaNodes[currentIaIndex];                        if (targetBtn) {                            if (targetBtn.classList.contains('is-active')) {                                targetBtn.click();                            }                            targetBtn.click();                        }                    }                });            }            if (iaWrapper) {                iaWrapper.addEventListener('click', function(e) {                    if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {                        closeAllIANodes();                        resetExploreBtn();                    }                });            }            /* Initial Animation */            chartWrapper._fvAnimate = fvLocalAnimate;            fvLocalAnimate(chartWrapper);            /* Countdown Logic */            var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');            if (countdownContainer) {                var targetDateAttr = countdownContainer.getAttribute('data-target-date');                if (targetDateAttr) {                    var targetDate = new Date(targetDateAttr);                    var pad = function(n) { return (n < 10 ? '0' : '') + n; };                                        var updateCountdown = function() {                        var difference = +targetDate - +new Date();                        var d = 0, h = 0, m = 0, s = 0;                        if (difference > 0) {                            d = Math.floor(difference / (1000 * 60 * 60 * 24));                            h = Math.floor((difference / (1000 * 60 * 60)) % 24);                            m = Math.floor((difference / 1000 / 60) % 60);                            s = Math.floor((difference / 1000) % 60);                        }                                                var daysEl = countdownContainer.querySelector('[data-time="days"]');                        var hoursEl = countdownContainer.querySelector('[data-time="hours"]');                        var minsEl = countdownContainer.querySelector('[data-time="minutes"]');                        var secsEl = countdownContainer.querySelector('[data-time="seconds"]');                                                if (daysEl) daysEl.textContent = d;                        if (hoursEl) hoursEl.textContent = pad(h);                        if (minsEl) minsEl.textContent = pad(m);                        if (secsEl) secsEl.textContent = pad(s);                    };                                        updateCountdown();                    setInterval(updateCountdown, 1000);                }            }        }        if (false) {            var slideshowContainer = document.getElementById(uniqueId + '-slideshow');            if (slideshowContainer) {                var slides = slideshowContainer.querySelectorAll('.fv-slide');                slides.forEach(function(slide) {                    setupWrapper(slide.querySelector('.fv-chart-wrapper'));                });            }                    } else {            setupWrapper(root);        }      }            if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1793795199133-m1bqm59zo', false); });      } else {        initialize('fv-chart-1793795199133-m1bqm59zo', false);      }    })();      </script></div><p>It’s worth noting that the microfiber roller takes quite a long time to air-dry. I placed it near a dehumidifier to speed up the process, but it still took two days before it was dry enough for me to feel comfortable storing it. </p><p>The big surprise was the battery life. Dyson’s specifications claim that the W1 PencilWash can run for 45 minutes on a single charge (up from 30 minutes for the original PencilWash), but during my tests it ran for an astonishing two hours and 13 minutes — and that was during active mopping, not just running the roller without resistance. I have contacted Dyson’s press office to ask whether that’s expected performance, but it’s safe to say that you shouldn’t have any problems cleaning even large homes.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cp2xidV3sN6Dfu3ndqiN2b-1920-80.jpg" alt="Hair caught in wheel under Dyson W1 PencilWash" /><figcaption>Hair became caught in one of the wheels on the bottom of the floorhead<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7xYVZMquCn6wFC2TC2mLid-1920-80.jpg" alt="Dyson W1 PencilWash with bottle of cleaner and bowl of dirty waste water" /><figcaption>The dirty water container is now easier to empty, with less potential for spillage<small role="credit">Future</small></figcaption></figure></figure><p>Overall, I’m impressed with the W1 PencilWash. Dyson has clearly taken on board feedback from the first model (the detachable clean water tank and scrubbing bristles are highlights) while keeping the fundamentals the same. If you have a large home with lots of hard flooring, or live with pets or children, then this new model would be a great choice. If, on the other hand, your home is relatively small and you want something for everyday maintenance, the original PencilWash might be the smarter choice at its newly reduced price.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-dyson-w1-pencilwash"><span>Should you buy the Dyson W1 PencilWash?</span></h2><div ><table><caption>Dyson W1 PencilWash score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Same price as the original PencilWash at launch. Relatively pricey for a wet floor cleaner; you're paying for light weight and compact design.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Redesigned floor head is a huge improvement — especially new water tanks.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Great cleaning performance on stubborn stains and remarkable battery life, but hair can get caught in wheels.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h3 id="buy-it-if">Buy it if</h3><div class="product"><p><strong>You have lots of hard floors</strong></p><p>With its incredible battery life, the W1 PencilWash can mop your entire home on a single charge.</p></div><div class="product"><p><strong>You want to clean little and often</strong></p><p>The W1 PencilWash is quick to use and floors dry rapidly after cleaning, so it's very convenient for daily mopping.</p></div><h3 id="don-39-t-buy-it-if">Don't buy it if</h3><div class="product"><p><strong>You have long hair</strong></p><p>Although the metal comb is designed to catch hair, I found it tended to get caught on one of the wheels under the floorhead.</p></div><div class="product"><p><strong>You have unsealed floors</strong></p><p>Neither version of the PencilWash is suitable for unsealed flooring.</p></div><h2 class="article-body__section" id="section-dyson-w1-pencilwash-also-consider"><span>Dyson W1 PencilWash: also consider</span></h2><p>If the Dyson W1 PencilWash isn't the right wet floor cleaner for you, here are two other options to think about.</p><div class="product"><a data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1152px;"><p class="vanilla-image-block" style="padding-top:150.00%;"><img id="BdvAcWUWhAQjvyf6ScYryG" name="Pencilwash" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/BdvAcWUWhAQjvyf6ScYryG-1920-80.jpg" mos="" align="middle" fullscreen="" width="1152" height="1728" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Dyson PencilWash</strong></p><p>The original PencilWash is still a great option, and has received a serious price cut since the launch of the W1. Well worth investigating if you have a small home.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/dyson-pencilwash-review" data-dimension112="7403bc38-d84f-11f1-a9bb-ab1d18b02220" data-action="Deal Block" data-label="Read our full Dyson PencilWash review" data-dimension48="Read our full Dyson PencilWash review" data-dimension25=""><strong>Dyson PencilWash review</strong></a></p></div><div class="product"><a data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="CLGDzsfyNfUeHKcYwBXt3c" name="image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CLGDzsfyNfUeHKcYwBXt3c-1920-80.png" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Bissell CrossWave HydroScrub</strong></p><p>If you want a full wet and dry cleaner, check out Bissell. The CrossWave HydroScrub isn't small, but it's a great all-rounder and about the same price as the W1 PencilWash.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/vacuums/bissell-crosswave-hydroscrub-review" data-dimension112="7403bc9c-d84f-11f1-a5bb-07341bc72238" data-action="Deal Block" data-label="Read our full Bissell CrossWave HydroScrub review" data-dimension48="Read our full Bissell CrossWave HydroScrub review" data-dimension25=""><strong>Bissell CrossWave HydroScrub review</strong></a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-dyson-w1-pencilwash"><span>How I tested the Dyson W1 PencilWash</span></h2><p>I tested the Dyson W1 PencilWash on sealed laminate flooring, using Dyson 02 Probiotic Hard Floor Cleaning Solution and tap water. I used it on common household stains including dried juice, dried toothpaste, ketchup, flour, and human hair.</p><p>I emptied the floor head cassette, and cleaned the tank, comb, and microfiber roller using plain water.</p><p>I fully charged the W1, then used it to clean the floors, moving it backwards and forwards as in normal use, and timed how long it took for the battery to run flat.</p><p><em>First reviewed November 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Lavazza Tabli review: eco-friendly coffee tablets make quick, delicious espresso ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-lavazza-tabli-30-second-review"><span>Lavazza Tabli: 30-second review</span></h3><p>Coffee pods are out, and tablets are in. Recently, Keurig announced that it was killing off the K-Cup in favor of compressed coffee tablets, but it wasn't the first to the punch. Italian coffee company Lavazza had debuted its own coffee tablets and brewer — the Tabli system — months before, and it's excellent.</p><p>The main appeal of Tabli's compressed coffee pucks (called tabs) is their minimal packaging — there's no metal or plastic pod that needs to be recycled after each brew or worse, end up in landfill. Using ground coffee or whole beans is a much less wasteful way to prepare an espresso, but it takes longer, and while it's a fun hobby for some of us, not everyone is interested in getting into the technicalities of brewing a balanced shot.</p><p>Each of Lavazza's tabs provides exactly the right amount of coffee for a single serving, so there's no weighing required, and no loose grounds to make a mess of your counter. The whole process is just as clean and simple as using coffee capsules, but without the empty capsules to dispose of at the end. It seems like such a simple idea that it's surprising it hasn't hit the mainstream before — and the results are very impressive.</p><p>I've become quite picky during my years reviewing coffee machines, and the Tabli system produces a better-tasting brew than any coffee capsule I've tried. Its app compatibility is a nice touch too, but the ease of use and flavor are what really count — and they're both truly impressive.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zTNiTvp5pVKiTPVAjSCrmJ" name="IMG_20261009_111144" alt="Lavazza Tabli coffee machine with freshly dispensed espresso" src="https://cdn.mos.cms.futurecdn.net/zTNiTvp5pVKiTPVAjSCrmJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-lavazza-tabli-price-and-availability"><span>Lavazza Tabli: price and availability</span></h3><ul><li><strong>List price $129 / £199 for the machine alone</strong></li><li><strong>Available as a bundle that includes a milk frother and coffee tabs</strong></li><li><strong>Tabs are competitively priced and cheaper than Nespresso</strong></li></ul><p>The Tabli coffee machine has a list price of $129 / £199. That's between AU$190 and AU$380, though the Tabli system isn't available in Australia yet. There are also bundles available that include the Lavazza MilkEasy frother and several boxes of Tabs for much less than all the components would cost separately. </p><p>Although it's not the cheapest single-serve coffee maker around, bear in mind that unlike some of its rivals, the Tabli system won't sting you with the price of coffee in the longer term. Bosch Tassimo machines, for example, are very cheap, but the pods are some of the priciest around.</p><p>A box of 12 Tabs costs £5.89 in the UK, which is about 49p per drink. You can also pick up a multipack of eight boxes for £40, which brings the cost per drink down to 42p.</p><p>Things are slightly more expensive in the US, where you can buy a four-pack of boxes for $48, meaning each drink costs $1. That's still very reasonable, though. For comparison, Nespresso Vertuo capsules cost between $1.40 and $1.60 each.</p><ul><li><strong>Value score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-lavazza-tabli-specifications"><span>Lavazza Tabli: specifications</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Name</strong></p></td><td  ><p>Lavazza Tabli</p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Tablet coffee maker</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (W x H x D)</strong></p></td><td  ><p>6.5 x 12.9 x 15.4 inches / 16.5 x 32.7 x 39cm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>9.9lbs / 4.5kg</p></td></tr><tr><td class="firstcol " ><p><strong>Water reservoir capacity</strong></p></td><td  ><p>40.58oz / 1.2 liters</p></td></tr><tr><td class="firstcol " ><p><strong>Milk frother</strong></p></td><td  ><p>No (but can be bought with a standalone one)</p></td></tr><tr><td class="firstcol " ><p><strong>Bars of pressure</strong></p></td><td  ><p>15 bar</p></td></tr><tr><td class="firstcol " ><p><strong>User profiles</strong></p></td><td  ><p>None</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-lavazza-tabli-design"><span>Lavazza Tabli: design</span></h3><ul><li><strong>Sleek, modern aesthetic</strong></li><li><strong>Minimalist controls</strong></li><li><strong>Available in three colors</strong></li></ul><p>The Lavazza Tabli is a sleek-looking single-serve coffee maker that comes in three colors: graphite black (shown here), sand white, and walnut brown. The top panel has four buttons — power, single shot, double shot, and lungo — and slides back with a smooth motion to reveal the small chamber resembling the bottom of a manual espresso machine’s filter basket, where you’ll place the compressed coffee pod.</p><p>There are also warning lights that will alert you if the used tab collection bin has been removed or needs emptying, if the water tank needs filling or hasn’t been properly inserted, and if the machine needs descaling.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pD5B4jeoy7SinRdUjjGyCJ" name="IMG_20261009_103130" alt="Person inserting coffee tab in Lavazza Tabli coffee machine" src="https://cdn.mos.cms.futurecdn.net/pD5B4jeoy7SinRdUjjGyCJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At the very back of the top panel, you’ll notice a flashing blue light, which indicates that the Tabli machine is ready to connect to your phone via Bluetooth. Once it’s connected, the blue light will remain steady — but more on that later. </p><p>Unlike some other Lavazza coffee machines, such as the <a href="https://www.techradar.com/home/coffee-machines/lavazza-assoluta-machine-review">Assoluta</a>, the Tabli doesn’t have its own milk frothing system. However, if you’re a fan of lattes and cappuccinos, the Tabli is available bundled with a standalone frother that works extremely well. My colleague Josh Russell has just finished testing it and will be publishing his review very soon.</p><p>The Tabli has a small drip tray that’s just the right height for an espresso cup. If you want to brew into a larger cup or mug, just slide the tray out to make room. Behind the tray, you’ll find the bin into which the Tabli machine drops used coffee tabs. The tabs don’t break apart, keeping mess to a minimum, and are caught in a basket so they’re not left sitting in water.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gbtoifwTTpEtEwxDqzWbaJ" name="IMG_20261009_103619" alt="Lavazza Tabli coffee machine on kitchen counter with boxes of coffee tabs" src="https://cdn.mos.cms.futurecdn.net/gbtoifwTTpEtEwxDqzWbaJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike most other coffee makers I’ve tested, the Tabli dispenses dirty water into this bin after rinsing itself rather than expelling it into the drip tray — a tidier solution that keeps the front of the machine clean.</p><p>The Tabli’s removable components aren’t dishwasher-safe, but they’re easy to hand-wash, and since this machine doesn’t have an integrated milk frother, there’s minimal maintenance necessary. Just keep the bin and drip tray clean, and follow the descaling instructions periodically.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-lavazza-tabli-performance"><span>Lavazza Tabli: performance</span></h3><ul><li><strong>Very simple to use</strong></li><li><strong>Much better coffee than most single-serve machines</strong></li><li><strong>App works well, but Google Home connectivity does not</strong></li></ul><p>Using the Tabli is just as simple as any ordinary capsule coffee maker: place your chosen tab in the recess under the lid, slide it closed, and pick the type of drink you want. A minute later, your drink will be ready to enjoy.</p><p>Coffee tabs are given a strength score on a scale of 1-13, and although there are currently only six types available, if the system proves successful, I'm hopeful Lavazza will increase its range.</p><p>There aren't any of the elaborate flavors you get with Nespresso or Tassimo pods; all Tabli tabs are made using nothing but compressed coffee, with no additives, and in my opinion that's no bad thing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2xqduSjTg4BogNc5zibarJ" name="IMG_20261009_111729" alt="Person opening packet of Lavazza Tabli coffee machine tabs" src="https://cdn.mos.cms.futurecdn.net/2xqduSjTg4BogNc5zibarJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I've tried three Tabli varieties during testing. Qualità Rossa and Qualità Oro both produced a smooth-tasting, easy-drinking espresso, while the Espresso Ristretto was a little punchier — but not at all bitter.</p><p>None of them had the astringent taste I associate with most coffee capsules, and their taste is much more like a drink made with freshly ground coffee beans. The espresso also has a good layer of crema that beats what I've come to expect from single-serve machines.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2Mmhtu32HLvhwH7u9VeDvJ" name="IMG_20261009_111320" alt="Lavazza Tabli coffee machine dispensing espresso" src="https://cdn.mos.cms.futurecdn.net/2Mmhtu32HLvhwH7u9VeDvJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Lavazza Tabli has a smartphone app, which you can use to operate the machine remotely and create custom drinks. After installing the Tabli app, you’ll be prompted to create an account and then connect your coffee maker. This was quick and easy; the app will request permission to search for nearby devices, then locate the Tabli machine without the need to scan any QR codes. The first time I connected to the machine, I was prompted to grant access to my calling history and contacts, but it seems this was a temporary bug. Following an app update, I disconnected from the Tabli machine, then restarted the process, and the prompt did not appear.</p><p>The app is nicely designed, and the brewing options are presented front and center. You can choose from the machine's three brewing options or create your own, give it a name, and save it for quick access in the future. You can adjust the volume and temperature of the drink, which is particularly useful if you enjoy an Americano in the morning. Because the machine uses prepared coffee tablets rather than ground beans, if you want to change the taste any more, you’ll need to pick a different type of coffee tab,</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZVYvN86WxkfojgqdfzLkbL-1920-80.png" alt="Creating custom drinks and brewing them using the Lavazza Tabli app" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hih444ZrWXF22JdEWK6aNL-1920-80.png" alt="Creating custom drinks and brewing them using the Lavazza Tabli app" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cWbN96RVLwYbn7bZsU6F7L-1920-80.png" alt="Creating custom drinks and brewing them using the Lavazza Tabli app" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Naturally, the app allows you to order more tabs (as well as other Lavazza products), but you have to scroll down to find the store — it’s not thrust in your face, which is refreshing.</p><p>The only issue I encountered involved the coffee maker’s smart home connectivity. The Tabli’s box advertises compatibility with Google Home and Alexa, but during my tests it sadly didn’t work. I was able to connect the Tabli machine to Google Home easily enough, but although Gemini could turn it on, it couldn’t start brewing. Nor could I use voice commands to choose different drinks, as described in the Tabli’s manual. </p><p>However, I’m not certain whether this is an issue with the Tabli or with Google Home and Gemini, which aren’t known for their flawless reliability. The Tabli app works exactly as intended, but don't count on being able to brew drinks using voice commands through a smart speaker.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-lavazza-tabli"><span>Should you buy the Lavazza Tabli?</span></h3><div ><table><caption>Lavazza Tabli score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Not the cheapest single-serve machine, but bundles are great value and coffee tabs are very reasonably priced for better value in the long term,</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Modern design with clean lines, which is easy to clean and maintain. Simple user interface.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Brews delicious coffee and is very easy to use. App works well, though smart home functionality does not.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-2">Buy it if</h2><div class="product"><p><strong>You hate the waste of coffee capsules</strong></p><p>Talbi tabs are made from nothing but ground coffee, and their packaging is almost entirely cardboard, with just a thin layer of plastic over the top of the carton.</p></div><div class="product"><p><strong>You want tasty coffee without mess</strong></p><p>Tabli tabs are pre-measured and ground, and they don't leave residue or crumbs on your fingers. They produce a smooth, easy-drinking espresso.</p></div><h2 id="don-39-t-buy-it-if-2">Don't buy it if</h2><div class="product"><p><strong>You really want to experiment</strong></p><p>Tabs are made from pre-measured and ground coffee, so you can't tinker with brew options like you can with whole beans.</p></div><div class="product"><p><strong>You really want smart home connectivity</strong></p><p>Google Home didn't play nicely with the Tabli during my tests, though I'm not sure whether that's an issue with Lavazza's software or Google's platform.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-lavazza-tabli"><span>How I tested the Lavazza Tabli</span></h3><p>I tested the Lavazza Tabli for three weeks, using it instead of my usual manual espresso machine. I used filtered water in its tank and used three different Tabli tab varieties. I experimented with brewing coffee remotely and creating custom drinks using the apps. I connected the coffee maker to Google Home and attempted to operate it using typed and spoken commands. I cleaned the coffee maker at the end of each day following Lavazza's instructions.</p><p>First reviewed October 2026</p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/coffee-machines/lavazza-tabli-review</link>
                                                                            <description>
                            <![CDATA[ The Tabli system trades metal and plastic capsules for compressed pucks of pure coffee — and the taste blows rivals like Nespresso out of the water. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">f6u2aCmifTVMCBwhC6KyVR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/nTH5RvmPd2gPpRDYoATvuk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 18 Oct 2026 14:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Coffee Machines]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                <author><![CDATA[ catherine.ellis@futurenet.com (Cat Ellis) ]]></author>                    <dc:creator><![CDATA[ Cat Ellis ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/gxZz6rCoNR6sXhqL34MvML-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Cat is TechRadar&amp;#39;s Homes Editor, covering smart home tech, kitchen appliances, vacuums, haircare and more. She&amp;#39;s been a tech journalist for 15 years, having worked on print magazines including PC Plus and PC Format, and is a&lt;a href=&quot;https://sca.coffee/&quot;&gt; &lt;u&gt;Speciality Coffee Association&lt;/u&gt;&lt;/a&gt; (SCA) certified barista, and holds a professional certificate in security awareness for smart homes.. Whether you want to invest in some smart lights, find your ideal hair styler, or pick the espresso machine of your dreams, she&amp;#39;s the right person to help.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/nTH5RvmPd2gPpRDYoATvuk-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lavazza Tabli coffee maker on kitchen counter with coffee tabs and espresso cups, and a boston fern plant]]></media:description>                                                            <media:text><![CDATA[Lavazza Tabli coffee maker on kitchen counter with coffee tabs and espresso cups, and a boston fern plant]]></media:text>
                                <media:title type="plain"><![CDATA[Lavazza Tabli coffee maker on kitchen counter with coffee tabs and espresso cups, and a boston fern plant]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/nTH5RvmPd2gPpRDYoATvuk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-lavazza-tabli-30-second-review"><span>Lavazza Tabli: 30-second review</span></h3><p>Coffee pods are out, and tablets are in. Recently, Keurig announced that it was killing off the K-Cup in favor of compressed coffee tablets, but it wasn't the first to the punch. Italian coffee company Lavazza had debuted its own coffee tablets and brewer — the Tabli system — months before, and it's excellent.</p><p>The main appeal of Tabli's compressed coffee pucks (called tabs) is their minimal packaging — there's no metal or plastic pod that needs to be recycled after each brew or worse, end up in landfill. Using ground coffee or whole beans is a much less wasteful way to prepare an espresso, but it takes longer, and while it's a fun hobby for some of us, not everyone is interested in getting into the technicalities of brewing a balanced shot.</p><p>Each of Lavazza's tabs provides exactly the right amount of coffee for a single serving, so there's no weighing required, and no loose grounds to make a mess of your counter. The whole process is just as clean and simple as using coffee capsules, but without the empty capsules to dispose of at the end. It seems like such a simple idea that it's surprising it hasn't hit the mainstream before — and the results are very impressive.</p><p>I've become quite picky during my years reviewing coffee machines, and the Tabli system produces a better-tasting brew than any coffee capsule I've tried. Its app compatibility is a nice touch too, but the ease of use and flavor are what really count — and they're both truly impressive.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zTNiTvp5pVKiTPVAjSCrmJ" name="IMG_20261009_111144" alt="Lavazza Tabli coffee machine with freshly dispensed espresso" src="https://cdn.mos.cms.futurecdn.net/zTNiTvp5pVKiTPVAjSCrmJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-lavazza-tabli-price-and-availability"><span>Lavazza Tabli: price and availability</span></h3><ul><li><strong>List price $129 / £199 for the machine alone</strong></li><li><strong>Available as a bundle that includes a milk frother and coffee tabs</strong></li><li><strong>Tabs are competitively priced and cheaper than Nespresso</strong></li></ul><p>The Tabli coffee machine has a list price of $129 / £199. That's between AU$190 and AU$380, though the Tabli system isn't available in Australia yet. There are also bundles available that include the Lavazza MilkEasy frother and several boxes of Tabs for much less than all the components would cost separately. </p><p>Although it's not the cheapest single-serve coffee maker around, bear in mind that unlike some of its rivals, the Tabli system won't sting you with the price of coffee in the longer term. Bosch Tassimo machines, for example, are very cheap, but the pods are some of the priciest around.</p><p>A box of 12 Tabs costs £5.89 in the UK, which is about 49p per drink. You can also pick up a multipack of eight boxes for £40, which brings the cost per drink down to 42p.</p><p>Things are slightly more expensive in the US, where you can buy a four-pack of boxes for $48, meaning each drink costs $1. That's still very reasonable, though. For comparison, Nespresso Vertuo capsules cost between $1.40 and $1.60 each.</p><ul><li><strong>Value score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-lavazza-tabli-specifications"><span>Lavazza Tabli: specifications</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Name</strong></p></td><td  ><p>Lavazza Tabli</p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Tablet coffee maker</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (W x H x D)</strong></p></td><td  ><p>6.5 x 12.9 x 15.4 inches / 16.5 x 32.7 x 39cm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>9.9lbs / 4.5kg</p></td></tr><tr><td class="firstcol " ><p><strong>Water reservoir capacity</strong></p></td><td  ><p>40.58oz / 1.2 liters</p></td></tr><tr><td class="firstcol " ><p><strong>Milk frother</strong></p></td><td  ><p>No (but can be bought with a standalone one)</p></td></tr><tr><td class="firstcol " ><p><strong>Bars of pressure</strong></p></td><td  ><p>15 bar</p></td></tr><tr><td class="firstcol " ><p><strong>User profiles</strong></p></td><td  ><p>None</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-lavazza-tabli-design"><span>Lavazza Tabli: design</span></h3><ul><li><strong>Sleek, modern aesthetic</strong></li><li><strong>Minimalist controls</strong></li><li><strong>Available in three colors</strong></li></ul><p>The Lavazza Tabli is a sleek-looking single-serve coffee maker that comes in three colors: graphite black (shown here), sand white, and walnut brown. The top panel has four buttons — power, single shot, double shot, and lungo — and slides back with a smooth motion to reveal the small chamber resembling the bottom of a manual espresso machine’s filter basket, where you’ll place the compressed coffee pod.</p><p>There are also warning lights that will alert you if the used tab collection bin has been removed or needs emptying, if the water tank needs filling or hasn’t been properly inserted, and if the machine needs descaling.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pD5B4jeoy7SinRdUjjGyCJ" name="IMG_20261009_103130" alt="Person inserting coffee tab in Lavazza Tabli coffee machine" src="https://cdn.mos.cms.futurecdn.net/pD5B4jeoy7SinRdUjjGyCJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>At the very back of the top panel, you’ll notice a flashing blue light, which indicates that the Tabli machine is ready to connect to your phone via Bluetooth. Once it’s connected, the blue light will remain steady — but more on that later. </p><p>Unlike some other Lavazza coffee machines, such as the <a href="https://www.techradar.com/home/coffee-machines/lavazza-assoluta-machine-review">Assoluta</a>, the Tabli doesn’t have its own milk frothing system. However, if you’re a fan of lattes and cappuccinos, the Tabli is available bundled with a standalone frother that works extremely well. My colleague Josh Russell has just finished testing it and will be publishing his review very soon.</p><p>The Tabli has a small drip tray that’s just the right height for an espresso cup. If you want to brew into a larger cup or mug, just slide the tray out to make room. Behind the tray, you’ll find the bin into which the Tabli machine drops used coffee tabs. The tabs don’t break apart, keeping mess to a minimum, and are caught in a basket so they’re not left sitting in water.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="gbtoifwTTpEtEwxDqzWbaJ" name="IMG_20261009_103619" alt="Lavazza Tabli coffee machine on kitchen counter with boxes of coffee tabs" src="https://cdn.mos.cms.futurecdn.net/gbtoifwTTpEtEwxDqzWbaJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike most other coffee makers I’ve tested, the Tabli dispenses dirty water into this bin after rinsing itself rather than expelling it into the drip tray — a tidier solution that keeps the front of the machine clean.</p><p>The Tabli’s removable components aren’t dishwasher-safe, but they’re easy to hand-wash, and since this machine doesn’t have an integrated milk frother, there’s minimal maintenance necessary. Just keep the bin and drip tray clean, and follow the descaling instructions periodically.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-lavazza-tabli-performance"><span>Lavazza Tabli: performance</span></h3><ul><li><strong>Very simple to use</strong></li><li><strong>Much better coffee than most single-serve machines</strong></li><li><strong>App works well, but Google Home connectivity does not</strong></li></ul><p>Using the Tabli is just as simple as any ordinary capsule coffee maker: place your chosen tab in the recess under the lid, slide it closed, and pick the type of drink you want. A minute later, your drink will be ready to enjoy.</p><p>Coffee tabs are given a strength score on a scale of 1-13, and although there are currently only six types available, if the system proves successful, I'm hopeful Lavazza will increase its range.</p><p>There aren't any of the elaborate flavors you get with Nespresso or Tassimo pods; all Tabli tabs are made using nothing but compressed coffee, with no additives, and in my opinion that's no bad thing.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2xqduSjTg4BogNc5zibarJ" name="IMG_20261009_111729" alt="Person opening packet of Lavazza Tabli coffee machine tabs" src="https://cdn.mos.cms.futurecdn.net/2xqduSjTg4BogNc5zibarJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I've tried three Tabli varieties during testing. Qualità Rossa and Qualità Oro both produced a smooth-tasting, easy-drinking espresso, while the Espresso Ristretto was a little punchier — but not at all bitter.</p><p>None of them had the astringent taste I associate with most coffee capsules, and their taste is much more like a drink made with freshly ground coffee beans. The espresso also has a good layer of crema that beats what I've come to expect from single-serve machines.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2Mmhtu32HLvhwH7u9VeDvJ" name="IMG_20261009_111320" alt="Lavazza Tabli coffee machine dispensing espresso" src="https://cdn.mos.cms.futurecdn.net/2Mmhtu32HLvhwH7u9VeDvJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Lavazza Tabli has a smartphone app, which you can use to operate the machine remotely and create custom drinks. After installing the Tabli app, you’ll be prompted to create an account and then connect your coffee maker. This was quick and easy; the app will request permission to search for nearby devices, then locate the Tabli machine without the need to scan any QR codes. The first time I connected to the machine, I was prompted to grant access to my calling history and contacts, but it seems this was a temporary bug. Following an app update, I disconnected from the Tabli machine, then restarted the process, and the prompt did not appear.</p><p>The app is nicely designed, and the brewing options are presented front and center. You can choose from the machine's three brewing options or create your own, give it a name, and save it for quick access in the future. You can adjust the volume and temperature of the drink, which is particularly useful if you enjoy an Americano in the morning. Because the machine uses prepared coffee tablets rather than ground beans, if you want to change the taste any more, you’ll need to pick a different type of coffee tab,</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZVYvN86WxkfojgqdfzLkbL-1920-80.png" alt="Creating custom drinks and brewing them using the Lavazza Tabli app" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hih444ZrWXF22JdEWK6aNL-1920-80.png" alt="Creating custom drinks and brewing them using the Lavazza Tabli app" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cWbN96RVLwYbn7bZsU6F7L-1920-80.png" alt="Creating custom drinks and brewing them using the Lavazza Tabli app" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Naturally, the app allows you to order more tabs (as well as other Lavazza products), but you have to scroll down to find the store — it’s not thrust in your face, which is refreshing.</p><p>The only issue I encountered involved the coffee maker’s smart home connectivity. The Tabli’s box advertises compatibility with Google Home and Alexa, but during my tests it sadly didn’t work. I was able to connect the Tabli machine to Google Home easily enough, but although Gemini could turn it on, it couldn’t start brewing. Nor could I use voice commands to choose different drinks, as described in the Tabli’s manual. </p><p>However, I’m not certain whether this is an issue with the Tabli or with Google Home and Gemini, which aren’t known for their flawless reliability. The Tabli app works exactly as intended, but don't count on being able to brew drinks using voice commands through a smart speaker.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-lavazza-tabli"><span>Should you buy the Lavazza Tabli?</span></h3><div ><table><caption>Lavazza Tabli score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Not the cheapest single-serve machine, but bundles are great value and coffee tabs are very reasonably priced for better value in the long term,</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Modern design with clean lines, which is easy to clean and maintain. Simple user interface.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Brews delicious coffee and is very easy to use. App works well, though smart home functionality does not.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-2">Buy it if</h2><div class="product"><p><strong>You hate the waste of coffee capsules</strong></p><p>Talbi tabs are made from nothing but ground coffee, and their packaging is almost entirely cardboard, with just a thin layer of plastic over the top of the carton.</p></div><div class="product"><p><strong>You want tasty coffee without mess</strong></p><p>Tabli tabs are pre-measured and ground, and they don't leave residue or crumbs on your fingers. They produce a smooth, easy-drinking espresso.</p></div><h2 id="don-39-t-buy-it-if-2">Don't buy it if</h2><div class="product"><p><strong>You really want to experiment</strong></p><p>Tabs are made from pre-measured and ground coffee, so you can't tinker with brew options like you can with whole beans.</p></div><div class="product"><p><strong>You really want smart home connectivity</strong></p><p>Google Home didn't play nicely with the Tabli during my tests, though I'm not sure whether that's an issue with Lavazza's software or Google's platform.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-lavazza-tabli"><span>How I tested the Lavazza Tabli</span></h3><p>I tested the Lavazza Tabli for three weeks, using it instead of my usual manual espresso machine. I used filtered water in its tank and used three different Tabli tab varieties. I experimented with brewing coffee remotely and creating custom drinks using the apps. I connected the coffee maker to Google Home and attempted to operate it using typed and spoken commands. I cleaned the coffee maker at the end of each day following Lavazza's instructions.</p><p>First reviewed October 2026</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Braun OptiBrew Pro review: traditional drip coffee with a twist ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-braun-optibrew-pro-two-minute-review"><span>Braun OptiBrew Pro: two-minute review</span></h3><p>The Braun OptiBrew Pro does even more than you might expect from a drip coffee maker. It makes five different coffee styles: Regular, Bold, Over Ice, Cold Brew, and Coffee Shot. There are seven different brew sizes: 8 ounces, 10 ounces, 12 ounces, 16 ounces, 20 ounces, a six-cup half-carafe, and a 12-cup full carafe. The Coffee Shot setting is not technically espresso but has a similar strength. This setting yields about three ounces of highly concentrated brew, perfect for making lattes and cappuccinos. A built-in milk frother tucks away when not in use.</p><p>The machine comes with a reusable filter, though you can use a cone-shaped #4 paper filter if you prefer. It also comes with a double-sided coffee scoop, so you can measure out the precise amount of coffee you need for each brew size and style. </p><p>The large, easy-to-read touch screen lets you set up your brew. You can adjust for high altitude and/or hard water if needed. Set up auto-brew for a specific time and you'll have freshly brewed coffee waiting for you when you wake up in the morning. The keep warm feature can keep your coffee warm for up to four hours at the temperature of your choice. You can also reheat cold coffee that way.</p><p>Cleanup is easy, and most of the parts are dishwasher-safe. The Braun OptiBrew Pro is easy to use, and it produces excellent coffee in a variety of styles.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Ag9EHTGWtvJ6RPJsE3Zgo4" name="braun-optibrew-pro-touch-screen" alt="Braun OptiBrew Pro close up of touch screen" src="https://cdn.mos.cms.futurecdn.net/Ag9EHTGWtvJ6RPJsE3Zgo4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-braun-optibrew-pro-price-and-availability"><span>Braun OptiBrew Pro: price and availability</span></h3><ul><li><strong>Available for purchase on Braun's website, Target, and Williams-Sonoma</strong></li><li><strong>Retails for $199.95 (roughly £151.10 GBP, $287 AUD)</strong></li><li><strong>Only one colorway: black and silver</strong></li></ul><p>The Braun OptiBrew Pro is available on Braun's website as well as other retailers such as Target and Williams-Sonoma. It comes in just the one colorway which is black with silver accents. The retail price is $199.95 (roughly £151.10 GBP, $287 AUD).</p><h3 class="article-body__section" id="section-braun-optibrew-pro-specs"><span>Braun OptiBrew Pro: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Braun OptiBrew Pro</p></td></tr><tr><td class="firstcol " ><p>Type</p></td><td  ><p>Manual/Drip</p></td></tr><tr><td class="firstcol " ><p>Dimensions </p></td><td  ><p>6.9 x 14.6 x 11.8 inches / 175 x 370 x 300 mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>10.14 lbs / 4.6 kg</p></td></tr><tr><td class="firstcol " ><p>Brew styles</p></td><td  ><p>Regular, Bold, Over Ice, Cold Brew, and Coffee Shot</p></td></tr><tr><td class="firstcol " ><p>Milk frother</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Coffee bean grinder</p></td><td  ><p>No</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-braun-optibrew-pro-design"><span>Braun OptiBrew Pro: design</span></h3><ul><li><strong>Many features in compact machine </strong></li><li><strong>Comes with everything you need</strong></li><li><strong>Easy to use and clean </strong></li></ul><p>The Braun OptiBrew Pro is well-designed and has a lot of features for a compact drip brewer. The large and easy-to-read touch screen lets you set up whatever sort of brew you'd like. It comes with a reusable filter, but you can also use a #4 paper cone filter if you prefer. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iyj9GJtVXYPpvfcC3AAnXA-1920-80.jpg" alt="Braun OptiBrew Pro filter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5RoVLbTzYEeMf8BxABADbA-1920-80.jpg" alt="Braun OptiBrew Pro filter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>The Braun OptiBrew Pro has a large capacity water tank on the back, which you can remove for easier filling if you like. The tank is marked with brew sizes so you can always be sure you have enough water in the tank for the size coffee you're making.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/69KZzuU3yQj55iJNtk6QDb-1920-80.jpg" alt="Braun OptiBrew Pro water tank" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tbxCDFBmsCZFU7TkZeGaKb-1920-80.jpg" alt="Braun OptiBrew Pro water tank" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>The milk frother tucks neatly away on the left side; simply swing it out to use it. Pressing the top of it turns it on, let go to turn it off. Twist it to the unlock symbol to remove the frother for cleaning. It's the only part that's not dishwasher-safe, but it's easy enough to wash up in the sink.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FrrXW49HUNZxcFLJa6syyJ-1920-80.jpg" alt="Braun OptiBrew Pro milk frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GVFR4MYcqjbcjyzPaWQvzJ-1920-80.jpg" alt="Braun OptiBrew Pro milk frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>When you're making a single serving of coffee rather than a carafe, you can pull out a built-in platform that puts your mug close to the filter. This helps avoid any splattering and minimizes your coffee's contact with air. It's just the right height for a regular-to-large mug or a small-to-medium travel mug.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5YdqzdKcw3JuxFTcW53qjJ" name="braun-optibrew-pro-platform" alt="Braun OptiBrew Pro mug on platform" src="https://cdn.mos.cms.futurecdn.net/5YdqzdKcw3JuxFTcW53qjJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>The included coffee scoop is two-sided, with one side being larger than the other. The user guide has a chart that tells you how many larger or small scoops to use for each brew style. This chart is a good guideline to start with, of course you can use more or less coffee to your personal tastes. The handle of the coffee scoop can be used as a coffee bag clip.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5B5kk7JzJTJRiQ95bu2KD-1920-80.jpg" alt="Braun OptiBrew Pro coffee scoop" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AKcyK9M5rpCnnEN2MbDUF-1920-80.jpg" alt="Braun OptiBrew Pro coffee scoop" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Other features include a keep-warm plate, which you can set for up to four hours, that you can also use to rewarm cold coffee. The OptiBrew has an auto-on feature so you can set up your coffee the night before. </p><p>If you wish to pause the brewing mid-carafe to grab a cup, you can easily do that by switching the lever in front from "coffee" to "stop." </p><p>Additionally, you can adjust for high altitude and water hardness if you need to. You can even adjust the beep tone if you like.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-braun-optibrew-pro-performance"><span>Braun OptiBrew Pro: performance</span></h3><ul><li><strong>Straightforward and simple to use</strong></li><li><strong>Feature-rich</strong></li><li><strong>Makes delicious coffee</strong></li></ul><p>I tested out lots of different brew styles, all of which made some delicious coffee. There's something on the menu for everyone.</p><h2 id="regular-coffee">Regular coffee </h2><p>I started by making a half carafe of just regular drip coffee. I made it "bold" style, which is how I like it. I also used the maximum amount of recommended coffee, which was four big scoops. This came out great, nice and strong. Some carafes spill as they pour, but this one is well-designed and doesn't do that. I tested the brew pause feature by switching the lever from "coffee" to "stop" during brewing, poured myself a cup, and then switched the lever back to "coffee." Very little coffee dripped out while I was pouring a cup (maybe a drop or two) and when I switched the lever back, brewing continued as expected.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Df5SqvqNB9pXTW8qiknnAJ-1920-80.jpg" alt="Braun OptiBrew Pro brewing a half carafe" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/S48Xm79Jv7GWwApD3veHyG-1920-80.jpg" alt="Braun OptiBrew Pro brewing a half carafe" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xvK8goMfvVV7VctTTAL2ZH-1920-80.jpg" alt="Braun OptiBrew Pro brewing a half carafe" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="regular-coffee-single-serving">Regular coffee: single serving</h2><p>I tried out some different single sizes of regular coffee, using the coffee dosage chart in the user guide. Each time I chose the maximum coffee dosage and selected the "bold" setting. I made a 12oz mug and a 16oz travel mug using the built-in platform. Both came out great.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vnnLVqiqjgs7vsBpVTTDna-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TWjaRbiLrV6hD8sVA9djWa-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FHGp7j2jdbtEshc5nUstia-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RJ2gDbBSMTX2Qt5v36EEha-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="regular-coffee-auto-on-and-keep-warm">Regular coffee: auto-on and keep-warm</h2><p>If you want to have your coffee hot and ready for you when you wake up in the morning, use the auto-on feature. I tested this out and it worked perfectly. You can set the keep-warm feature to your desired time, up to four hours, so it will still be warm when you go for a second or third cup later. All of this worked exactly as expected. You can even set how warm you want your coffee to stay. I used the medium setting and found the coffee to be plenty hot even hours later. Hot enough that I had to blow on it before drinking. The red indicator light under the warming plate lets you know it's hot.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XUUvpmN3qnoHotccTAuqzE-1920-80.jpg" alt="Braun OptiBrew Pro auto-on feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yFKnuvgCd4vodPJJwoDjvE-1920-80.jpg" alt="Braun OptiBrew Pro auto-on feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Hnb5djJDjNqyyBycU8HH3F-1920-80.jpg" alt="Braun OptiBrew Pro auto-on feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-brew">Cold brew</h2><p>The Cold Brew setting takes a bit longer and brews the coffee at a lower temperature. It took about 12 minutes to brew 8oz of coffee. I found the brew to be quite smooth and tasty. I tasted it before adding ice and noticed that it was definitely lukewarm rather than hot. This minimizes ice melt. This feature was a real highlight for me, and rather unexpected for a drip coffee maker.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WwFFrJBLBhajS7jun3iYsi-1920-80.jpg" alt="Braun OptiBrew Pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LAojdYvWncXxniM6HmRUri-1920-80.jpg" alt="Braun OptiBrew Pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hZ9o9dXmAKKEujhDeqScqi-1920-80.jpg" alt="Braun OptiBrew Pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="brew-over-ice">Brew Over Ice</h2><p>If you don't have the time to wait for Cold Brew, the Brew Over Ice setting gets you to iced coffee in about 1/3 the time. It took about four minutes to brew an 8oz cup. However, I found it a little bitter, so for me the extra time for the Cold Brew setting is worthwhile.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/86ftkYQHc2HBMfhkVtRMii-1920-80.jpg" alt="Braun OptiBrew Pro brew over ice setting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/exdvd7PB6aFaSGAQxXFRbi-1920-80.jpg" alt="Braun OptiBrew Pro brew over ice setting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 id="coffee-shot-and-milk-frother">Coffee shot and milk frother</h2><p>To make a true espresso, you need an espresso machine, which uses pressure. This is a drip machine, so you can't make a real espresso. However, the Braun OptiBrew Pro does make an ultra-concentrated brew they call a Coffee Shot. </p><p>Frankly, I found it too strong to drink on its own, but it makes a great base for latte or cappuccino-style beverage. I used the milk frother and made myself a sort of cappuccino. Now, the frother only froths, it doesn't heat the milk, so the user guide suggests microwaving your milk first if you want hot foam. I did that and it worked out fine. I used 2% dairy milk and the foam was copious and quite sturdy. It even stood up to vigorous stirring. My drink was delicious! And the frother was easy to detach and wash afterwards.  </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uuB77pHtciurXWtSLzwAmU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/x3uABSghKh7wooEnFYhLyT-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BWLejSYH4QUXu4BtYQVbJU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ara6juWXr8Wq2DyT5fg5oU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sBz2nJnv5JSjc9xHGTw6qU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/c3i7kVsXW66Zj3BwsyX5uU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CAvLLmbuG6wcjysRYF9jsU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/b4qWvpU8SAiwiQKZ98yAmU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BkDWoaJScbD8SEyjyecZkU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sUncoLkpk6nTLsZa8K6ejU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eYnSNGdcMy4rSd2U7JutdU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UC23nPxzoYCZGecAK82RBU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-braun-optibrew-pro"><span>Should you buy the Braun OptiBrew Pro?</span></h3><div ><table><caption>Braun OptiBrew Pro score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>While I think the features make the OptiBrew Pro worthwhile, it's  more expensive than your average drip brewer.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Tons of features are packed into a machine with a relatively small footprint.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The OptiBrew Pro does everything it claims and does it extremely well.</p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-3">Buy it if</h2><div class="product"><p><strong>You just want good coffee</strong></p><p>At its heart, this is a drip coffee machine that makes excellent drip coffee.</p></div><div class="product"><p><strong>You want a lot of different brew styles</strong></p><p>It doesn't just make a carafe of drip coffee, it makes a variety of single serve sizes, has two different methods for iced coffee, and even brews a highly concentrated coffee shot for espresso-style drinks. It also froths milk for a cappuccino type of beverage.</p></div><div class="product"><p><strong>You want some more fancy features</strong></p><p>Set your coffee up in advance with the auto-on feature. Keep it warm or reheat it with the adjustable-temperature keep warm feature. You can adjust for high altitude or hard water. Even change up beep tone if you like.</p></div><h2 id="don-39-t-buy-it-if-3">Don't buy it if</h2><div class="product"><p><strong>It's too pricey</strong></p><p>You can find a simple drip coffee maker without the bells and whistles for about a tenth of the price.</p></div><div class="product"><p><strong>You want true espresso</strong></p><p>Though the OptiBrew Pro makes a highly concentrated coffee shot that you can use like espresso for your frothed milk beverages, it isn't technically espresso. You need an espresso machine for that.</p></div><div class="product"><p><strong>You are looking for an automatic bean-to-cup machine</strong></p><p>There is no built-in grinder. You have to measure and scoop your ground coffee into the filter yourself. This is not an automatic or even semi-automatic machine, it's a manual machine.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0a0b3bfa-c63c-11f1-b9fe-7999680e081e" data-action="Deal Block" data-label="You are looking for an automatic bean-to-cup machineThere is no built-in grinder. You have to measure and scoop your ground coffee into the filter yourself. This is not an automatic or even semi-automatic machine, it's a manual machine." data-dimension48="You are looking for an automatic bean-to-cup machineThere is no built-in grinder. You have to measure and scoop your ground coffee into the filter yourself. This is not an automatic or even semi-automatic machine, it's a manual machine." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-braun-optibrew-pro-also-consider"><span>Braun OptiBrew Pro: also consider</span></h3><div class="product"><a data-dimension112="0a0b3ce0-c63c-11f1-9f25-a9ec9e159547" data-action="Deal Block" data-label="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1136px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8TYz8XSYsuFTFr2sc5jM7i" name="Ninja-autobarista-pro-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8TYz8XSYsuFTFr2sc5jM7i-1920-80.png" mos="" align="middle" fullscreen="" width="1136" height="1136" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine </strong></p><p>Want lots more bells and whistles? This automatic machine makes drip coffee, iced coffee, espresso, and milk-based drinks. Go from whole beans to cup with the touch of a button.</p><p><strong>Check out my </strong><a href="https://www.techradar.com/home/coffee-machines/the-ninja-autobarista-pro-fully-automatic-espresso-machine-lets-you-make-just-about-any-coffee-creation-you-can-imagine" data-dimension112="0a0b3ce0-c63c-11f1-9f25-a9ec9e159547" data-action="Deal Block" data-label="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25=""><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0a0b3ce0-c63c-11f1-9f25-a9ec9e159547" data-action="Deal Block" data-label="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="0a0b3d44-c63c-11f1-b96f-ddceda1f8f2d" data-action="Deal Block" data-label="Read our Cuisinart Grind &amp; Brew review" data-dimension48="Read our Cuisinart Grind &amp; Brew review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:988px;"><p class="vanilla-image-block" style="padding-top:100.81%;"><img id="U7MrJ8KSApnkzUV6qyZuWc" name="cuisinart-grind-and-brew-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/U7MrJ8KSApnkzUV6qyZuWc-1920-80.png" mos="" align="middle" fullscreen="" width="988" height="996" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Cuisinart Grind &amp; Brew</strong></p><p>Not only is this one a little cheaper than the Braun OptiBrew Pro, but it has a built-in coffee bean grinder so it can take either whole beans or ground coffee. It makes a tasty brew that stays hot for hours. However, it lacks some of the other features such as a milk frother and a cold brew option.</p><p><strong>Read our </strong><a href="https://www.techradar.com/reviews/cuisinart-grind-and-brew-auto-coffee-maker-review" data-dimension112="0a0b3d44-c63c-11f1-b96f-ddceda1f8f2d" data-action="Deal Block" data-label="Read our Cuisinart Grind &amp; Brew review" data-dimension48="Read our Cuisinart Grind &amp; Brew review" data-dimension25=""><strong>Cuisinart Grind &amp; Brew review</strong></a><strong>.</strong><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0a0b3d44-c63c-11f1-b96f-ddceda1f8f2d" data-action="Deal Block" data-label="Read our Cuisinart Grind &amp; Brew review" data-dimension48="Read our Cuisinart Grind &amp; Brew review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-braun-optibrew-pro"><span>How I tested the Braun OptiBrew Pro</span></h3><p>I made and drank lots of coffee! I brewed a half carafe and a full carafe. I made single serve brews, both the 12oz and 16oz sizes. I made iced coffee two different ways: Cold Brew and Brew Over Ice. I made a Coffee Shot and added it to 2% milk that I had microwaved and then frothed with the built-in milk frother. I made both regular coffee and decaf. I utilized the auto on, keep warm,  and pause during brewing functions. I cleaned the filter, filter holder, and milk frother after every use.</p><p><em>First reviewed October 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/coffee-machines/looking-for-maximum-versatility-the-braun-optibrew-pro-brews-delicious-drip-coffee-makes-specialized-cold-brew-and-even-froths-milk-all-in-one-machine</link>
                                                                            <description>
                            <![CDATA[ A step up from the typical drip coffee machine, with multiple brew sizes and styles plus a built-in milk frother. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">diANE9RnWf57Q3MnRsxBo3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QPK23UBoZfXmNdBcZs6qFn-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 13 Oct 2026 16:03:41 +0000</pubDate>                                                                                                                                <updated>Tue, 13 Oct 2026 16:04:49 +0000</updated>
                                                                                                                                            <category><![CDATA[Coffee Machines]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Karen Freeman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DDiERCZA8XFtW9uHdwjzpL-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Karen is a world traveler, writer, teacher, family woman, and occasionally a movie extra. She has been writing about Apple, consumer tech, and lifestyle products since 2010 for various publications including TechRadar, CNET, Tom’s Guide, iMore, Macworld, AppAdvice, and WatchAware.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QPK23UBoZfXmNdBcZs6qFn-1920-80.jpg">
                                                            <media:credit><![CDATA[Karen Freeman / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Braun OptiBrew Pro on the counter]]></media:description>                                                            <media:text><![CDATA[Braun OptiBrew Pro on the counter]]></media:text>
                                <media:title type="plain"><![CDATA[Braun OptiBrew Pro on the counter]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QPK23UBoZfXmNdBcZs6qFn-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-braun-optibrew-pro-two-minute-review"><span>Braun OptiBrew Pro: two-minute review</span></h3><p>The Braun OptiBrew Pro does even more than you might expect from a drip coffee maker. It makes five different coffee styles: Regular, Bold, Over Ice, Cold Brew, and Coffee Shot. There are seven different brew sizes: 8 ounces, 10 ounces, 12 ounces, 16 ounces, 20 ounces, a six-cup half-carafe, and a 12-cup full carafe. The Coffee Shot setting is not technically espresso but has a similar strength. This setting yields about three ounces of highly concentrated brew, perfect for making lattes and cappuccinos. A built-in milk frother tucks away when not in use.</p><p>The machine comes with a reusable filter, though you can use a cone-shaped #4 paper filter if you prefer. It also comes with a double-sided coffee scoop, so you can measure out the precise amount of coffee you need for each brew size and style. </p><p>The large, easy-to-read touch screen lets you set up your brew. You can adjust for high altitude and/or hard water if needed. Set up auto-brew for a specific time and you'll have freshly brewed coffee waiting for you when you wake up in the morning. The keep warm feature can keep your coffee warm for up to four hours at the temperature of your choice. You can also reheat cold coffee that way.</p><p>Cleanup is easy, and most of the parts are dishwasher-safe. The Braun OptiBrew Pro is easy to use, and it produces excellent coffee in a variety of styles.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Ag9EHTGWtvJ6RPJsE3Zgo4" name="braun-optibrew-pro-touch-screen" alt="Braun OptiBrew Pro close up of touch screen" src="https://cdn.mos.cms.futurecdn.net/Ag9EHTGWtvJ6RPJsE3Zgo4-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-braun-optibrew-pro-price-and-availability"><span>Braun OptiBrew Pro: price and availability</span></h3><ul><li><strong>Available for purchase on Braun's website, Target, and Williams-Sonoma</strong></li><li><strong>Retails for $199.95 (roughly £151.10 GBP, $287 AUD)</strong></li><li><strong>Only one colorway: black and silver</strong></li></ul><p>The Braun OptiBrew Pro is available on Braun's website as well as other retailers such as Target and Williams-Sonoma. It comes in just the one colorway which is black with silver accents. The retail price is $199.95 (roughly £151.10 GBP, $287 AUD).</p><h3 class="article-body__section" id="section-braun-optibrew-pro-specs"><span>Braun OptiBrew Pro: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Braun OptiBrew Pro</p></td></tr><tr><td class="firstcol " ><p>Type</p></td><td  ><p>Manual/Drip</p></td></tr><tr><td class="firstcol " ><p>Dimensions </p></td><td  ><p>6.9 x 14.6 x 11.8 inches / 175 x 370 x 300 mm</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>10.14 lbs / 4.6 kg</p></td></tr><tr><td class="firstcol " ><p>Brew styles</p></td><td  ><p>Regular, Bold, Over Ice, Cold Brew, and Coffee Shot</p></td></tr><tr><td class="firstcol " ><p>Milk frother</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Coffee bean grinder</p></td><td  ><p>No</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-braun-optibrew-pro-design"><span>Braun OptiBrew Pro: design</span></h3><ul><li><strong>Many features in compact machine </strong></li><li><strong>Comes with everything you need</strong></li><li><strong>Easy to use and clean </strong></li></ul><p>The Braun OptiBrew Pro is well-designed and has a lot of features for a compact drip brewer. The large and easy-to-read touch screen lets you set up whatever sort of brew you'd like. It comes with a reusable filter, but you can also use a #4 paper cone filter if you prefer. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iyj9GJtVXYPpvfcC3AAnXA-1920-80.jpg" alt="Braun OptiBrew Pro filter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5RoVLbTzYEeMf8BxABADbA-1920-80.jpg" alt="Braun OptiBrew Pro filter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>The Braun OptiBrew Pro has a large capacity water tank on the back, which you can remove for easier filling if you like. The tank is marked with brew sizes so you can always be sure you have enough water in the tank for the size coffee you're making.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/69KZzuU3yQj55iJNtk6QDb-1920-80.jpg" alt="Braun OptiBrew Pro water tank" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tbxCDFBmsCZFU7TkZeGaKb-1920-80.jpg" alt="Braun OptiBrew Pro water tank" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>The milk frother tucks neatly away on the left side; simply swing it out to use it. Pressing the top of it turns it on, let go to turn it off. Twist it to the unlock symbol to remove the frother for cleaning. It's the only part that's not dishwasher-safe, but it's easy enough to wash up in the sink.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FrrXW49HUNZxcFLJa6syyJ-1920-80.jpg" alt="Braun OptiBrew Pro milk frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GVFR4MYcqjbcjyzPaWQvzJ-1920-80.jpg" alt="Braun OptiBrew Pro milk frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>When you're making a single serving of coffee rather than a carafe, you can pull out a built-in platform that puts your mug close to the filter. This helps avoid any splattering and minimizes your coffee's contact with air. It's just the right height for a regular-to-large mug or a small-to-medium travel mug.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5YdqzdKcw3JuxFTcW53qjJ" name="braun-optibrew-pro-platform" alt="Braun OptiBrew Pro mug on platform" src="https://cdn.mos.cms.futurecdn.net/5YdqzdKcw3JuxFTcW53qjJ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>The included coffee scoop is two-sided, with one side being larger than the other. The user guide has a chart that tells you how many larger or small scoops to use for each brew style. This chart is a good guideline to start with, of course you can use more or less coffee to your personal tastes. The handle of the coffee scoop can be used as a coffee bag clip.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5B5kk7JzJTJRiQ95bu2KD-1920-80.jpg" alt="Braun OptiBrew Pro coffee scoop" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AKcyK9M5rpCnnEN2MbDUF-1920-80.jpg" alt="Braun OptiBrew Pro coffee scoop" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Other features include a keep-warm plate, which you can set for up to four hours, that you can also use to rewarm cold coffee. The OptiBrew has an auto-on feature so you can set up your coffee the night before. </p><p>If you wish to pause the brewing mid-carafe to grab a cup, you can easily do that by switching the lever in front from "coffee" to "stop." </p><p>Additionally, you can adjust for high altitude and water hardness if you need to. You can even adjust the beep tone if you like.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-braun-optibrew-pro-performance"><span>Braun OptiBrew Pro: performance</span></h3><ul><li><strong>Straightforward and simple to use</strong></li><li><strong>Feature-rich</strong></li><li><strong>Makes delicious coffee</strong></li></ul><p>I tested out lots of different brew styles, all of which made some delicious coffee. There's something on the menu for everyone.</p><h2 id="regular-coffee">Regular coffee </h2><p>I started by making a half carafe of just regular drip coffee. I made it "bold" style, which is how I like it. I also used the maximum amount of recommended coffee, which was four big scoops. This came out great, nice and strong. Some carafes spill as they pour, but this one is well-designed and doesn't do that. I tested the brew pause feature by switching the lever from "coffee" to "stop" during brewing, poured myself a cup, and then switched the lever back to "coffee." Very little coffee dripped out while I was pouring a cup (maybe a drop or two) and when I switched the lever back, brewing continued as expected.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Df5SqvqNB9pXTW8qiknnAJ-1920-80.jpg" alt="Braun OptiBrew Pro brewing a half carafe" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/S48Xm79Jv7GWwApD3veHyG-1920-80.jpg" alt="Braun OptiBrew Pro brewing a half carafe" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xvK8goMfvVV7VctTTAL2ZH-1920-80.jpg" alt="Braun OptiBrew Pro brewing a half carafe" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="regular-coffee-single-serving">Regular coffee: single serving</h2><p>I tried out some different single sizes of regular coffee, using the coffee dosage chart in the user guide. Each time I chose the maximum coffee dosage and selected the "bold" setting. I made a 12oz mug and a 16oz travel mug using the built-in platform. Both came out great.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vnnLVqiqjgs7vsBpVTTDna-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TWjaRbiLrV6hD8sVA9djWa-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FHGp7j2jdbtEshc5nUstia-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RJ2gDbBSMTX2Qt5v36EEha-1920-80.jpg" alt="Braun OptiBrew Pro brewing single serving" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="regular-coffee-auto-on-and-keep-warm">Regular coffee: auto-on and keep-warm</h2><p>If you want to have your coffee hot and ready for you when you wake up in the morning, use the auto-on feature. I tested this out and it worked perfectly. You can set the keep-warm feature to your desired time, up to four hours, so it will still be warm when you go for a second or third cup later. All of this worked exactly as expected. You can even set how warm you want your coffee to stay. I used the medium setting and found the coffee to be plenty hot even hours later. Hot enough that I had to blow on it before drinking. The red indicator light under the warming plate lets you know it's hot.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XUUvpmN3qnoHotccTAuqzE-1920-80.jpg" alt="Braun OptiBrew Pro auto-on feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yFKnuvgCd4vodPJJwoDjvE-1920-80.jpg" alt="Braun OptiBrew Pro auto-on feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Hnb5djJDjNqyyBycU8HH3F-1920-80.jpg" alt="Braun OptiBrew Pro auto-on feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-brew">Cold brew</h2><p>The Cold Brew setting takes a bit longer and brews the coffee at a lower temperature. It took about 12 minutes to brew 8oz of coffee. I found the brew to be quite smooth and tasty. I tasted it before adding ice and noticed that it was definitely lukewarm rather than hot. This minimizes ice melt. This feature was a real highlight for me, and rather unexpected for a drip coffee maker.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/WwFFrJBLBhajS7jun3iYsi-1920-80.jpg" alt="Braun OptiBrew Pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LAojdYvWncXxniM6HmRUri-1920-80.jpg" alt="Braun OptiBrew Pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hZ9o9dXmAKKEujhDeqScqi-1920-80.jpg" alt="Braun OptiBrew Pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="brew-over-ice">Brew Over Ice</h2><p>If you don't have the time to wait for Cold Brew, the Brew Over Ice setting gets you to iced coffee in about 1/3 the time. It took about four minutes to brew an 8oz cup. However, I found it a little bitter, so for me the extra time for the Cold Brew setting is worthwhile.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/86ftkYQHc2HBMfhkVtRMii-1920-80.jpg" alt="Braun OptiBrew Pro brew over ice setting" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/exdvd7PB6aFaSGAQxXFRbi-1920-80.jpg" alt="Braun OptiBrew Pro brew over ice setting" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 id="coffee-shot-and-milk-frother">Coffee shot and milk frother</h2><p>To make a true espresso, you need an espresso machine, which uses pressure. This is a drip machine, so you can't make a real espresso. However, the Braun OptiBrew Pro does make an ultra-concentrated brew they call a Coffee Shot. </p><p>Frankly, I found it too strong to drink on its own, but it makes a great base for latte or cappuccino-style beverage. I used the milk frother and made myself a sort of cappuccino. Now, the frother only froths, it doesn't heat the milk, so the user guide suggests microwaving your milk first if you want hot foam. I did that and it worked out fine. I used 2% dairy milk and the foam was copious and quite sturdy. It even stood up to vigorous stirring. My drink was delicious! And the frother was easy to detach and wash afterwards.  </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uuB77pHtciurXWtSLzwAmU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/x3uABSghKh7wooEnFYhLyT-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BWLejSYH4QUXu4BtYQVbJU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ara6juWXr8Wq2DyT5fg5oU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sBz2nJnv5JSjc9xHGTw6qU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/c3i7kVsXW66Zj3BwsyX5uU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CAvLLmbuG6wcjysRYF9jsU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/b4qWvpU8SAiwiQKZ98yAmU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BkDWoaJScbD8SEyjyecZkU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sUncoLkpk6nTLsZa8K6ejU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eYnSNGdcMy4rSd2U7JutdU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UC23nPxzoYCZGecAK82RBU-1920-80.jpg" alt="Braun OptiBrew Pro coffee shot and frothed milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-braun-optibrew-pro"><span>Should you buy the Braun OptiBrew Pro?</span></h3><div ><table><caption>Braun OptiBrew Pro score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>While I think the features make the OptiBrew Pro worthwhile, it's  more expensive than your average drip brewer.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Tons of features are packed into a machine with a relatively small footprint.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The OptiBrew Pro does everything it claims and does it extremely well.</p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-3">Buy it if</h2><div class="product"><p><strong>You just want good coffee</strong></p><p>At its heart, this is a drip coffee machine that makes excellent drip coffee.</p></div><div class="product"><p><strong>You want a lot of different brew styles</strong></p><p>It doesn't just make a carafe of drip coffee, it makes a variety of single serve sizes, has two different methods for iced coffee, and even brews a highly concentrated coffee shot for espresso-style drinks. It also froths milk for a cappuccino type of beverage.</p></div><div class="product"><p><strong>You want some more fancy features</strong></p><p>Set your coffee up in advance with the auto-on feature. Keep it warm or reheat it with the adjustable-temperature keep warm feature. You can adjust for high altitude or hard water. Even change up beep tone if you like.</p></div><h2 id="don-39-t-buy-it-if-3">Don't buy it if</h2><div class="product"><p><strong>It's too pricey</strong></p><p>You can find a simple drip coffee maker without the bells and whistles for about a tenth of the price.</p></div><div class="product"><p><strong>You want true espresso</strong></p><p>Though the OptiBrew Pro makes a highly concentrated coffee shot that you can use like espresso for your frothed milk beverages, it isn't technically espresso. You need an espresso machine for that.</p></div><div class="product"><p><strong>You are looking for an automatic bean-to-cup machine</strong></p><p>There is no built-in grinder. You have to measure and scoop your ground coffee into the filter yourself. This is not an automatic or even semi-automatic machine, it's a manual machine.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0a0b3bfa-c63c-11f1-b9fe-7999680e081e" data-action="Deal Block" data-label="You are looking for an automatic bean-to-cup machineThere is no built-in grinder. You have to measure and scoop your ground coffee into the filter yourself. This is not an automatic or even semi-automatic machine, it's a manual machine." data-dimension48="You are looking for an automatic bean-to-cup machineThere is no built-in grinder. You have to measure and scoop your ground coffee into the filter yourself. This is not an automatic or even semi-automatic machine, it's a manual machine." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-braun-optibrew-pro-also-consider"><span>Braun OptiBrew Pro: also consider</span></h3><div class="product"><a data-dimension112="0a0b3ce0-c63c-11f1-9f25-a9ec9e159547" data-action="Deal Block" data-label="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1136px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8TYz8XSYsuFTFr2sc5jM7i" name="Ninja-autobarista-pro-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8TYz8XSYsuFTFr2sc5jM7i-1920-80.png" mos="" align="middle" fullscreen="" width="1136" height="1136" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine </strong></p><p>Want lots more bells and whistles? This automatic machine makes drip coffee, iced coffee, espresso, and milk-based drinks. Go from whole beans to cup with the touch of a button.</p><p><strong>Check out my </strong><a href="https://www.techradar.com/home/coffee-machines/the-ninja-autobarista-pro-fully-automatic-espresso-machine-lets-you-make-just-about-any-coffee-creation-you-can-imagine" data-dimension112="0a0b3ce0-c63c-11f1-9f25-a9ec9e159547" data-action="Deal Block" data-label="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25=""><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0a0b3ce0-c63c-11f1-9f25-a9ec9e159547" data-action="Deal Block" data-label="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Check out my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="0a0b3d44-c63c-11f1-b96f-ddceda1f8f2d" data-action="Deal Block" data-label="Read our Cuisinart Grind &amp; Brew review" data-dimension48="Read our Cuisinart Grind &amp; Brew review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:988px;"><p class="vanilla-image-block" style="padding-top:100.81%;"><img id="U7MrJ8KSApnkzUV6qyZuWc" name="cuisinart-grind-and-brew-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/U7MrJ8KSApnkzUV6qyZuWc-1920-80.png" mos="" align="middle" fullscreen="" width="988" height="996" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Cuisinart Grind &amp; Brew</strong></p><p>Not only is this one a little cheaper than the Braun OptiBrew Pro, but it has a built-in coffee bean grinder so it can take either whole beans or ground coffee. It makes a tasty brew that stays hot for hours. However, it lacks some of the other features such as a milk frother and a cold brew option.</p><p><strong>Read our </strong><a href="https://www.techradar.com/reviews/cuisinart-grind-and-brew-auto-coffee-maker-review" data-dimension112="0a0b3d44-c63c-11f1-b96f-ddceda1f8f2d" data-action="Deal Block" data-label="Read our Cuisinart Grind &amp; Brew review" data-dimension48="Read our Cuisinart Grind &amp; Brew review" data-dimension25=""><strong>Cuisinart Grind &amp; Brew review</strong></a><strong>.</strong><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0a0b3d44-c63c-11f1-b96f-ddceda1f8f2d" data-action="Deal Block" data-label="Read our Cuisinart Grind &amp; Brew review" data-dimension48="Read our Cuisinart Grind &amp; Brew review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-braun-optibrew-pro"><span>How I tested the Braun OptiBrew Pro</span></h3><p>I made and drank lots of coffee! I brewed a half carafe and a full carafe. I made single serve brews, both the 12oz and 16oz sizes. I made iced coffee two different ways: Cold Brew and Brew Over Ice. I made a Coffee Shot and added it to 2% milk that I had microwaved and then frothed with the built-in milk frother. I made both regular coffee and decaf. I utilized the auto on, keep warm,  and pause during brewing functions. I cleaned the filter, filter holder, and milk frother after every use.</p><p><em>First reviewed October 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Chefman Coffee Station Pro review: ambitious all-in-one brewing with mixed results ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-chefman-coffee-station-pro-two-minute-review"><span>Chefman Coffee Station Pro: two-minute review</span></h3><p>The Chefman Coffee Station Pro is a great idea. People like their coffee brewed in different ways, and it's easy to end up with two or even three coffee machines on the counter to accommodate households with multiple coffee drinkers. For example, my husband usually drinks drip coffee, but occasionally likes an espresso. I rotate between drip, espresso, and iced coffee, depending on my mood and the weather. I also like my Nespresso machine, since the capsules are available in some interesting flavors I occasionally enjoy. I also drink a lot of tea, so an instant hot feature is welcome. We don't often drink lattes or cappuccinos, but when our kids or guest come to visit, they often do. We could easily end up with three different coffee machines (plus a frother and a tea kettle) in our coffee nook, but the Chefman Coffee Station Pro can do all that and more.</p><p>Sounds like a dream, but unfortunately it doesn't do everything well, or even acceptably. For example, it doesn't brew Nespresso capsules fully or correctly, resulting in a weak and tiny brew.  If you don't need every single feature, this machine might be a perfect fit for you because it does a lot of things well. I tested everything and found that it did some things far better than others.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yUfJ4xfmBn923nSXRhGo6B" name="chefman-coffee-station-flat-lay" alt="Chefman Coffee Station with all parts laid out" src="https://cdn.mos.cms.futurecdn.net/yUfJ4xfmBn923nSXRhGo6B-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-chefman-coffee-station-pro-price-and-availability"><span>Chefman Coffee Station Pro: price and availability</span></h3><ul><li><strong>Available on Chefman's website and other retailers</strong></li><li><strong>Retails for $399.99 (about £300 / AU$570)</strong></li><li><strong>Just one colorway, black and silver</strong></li></ul><p>You can buy the Chefman Coffee Station Pro on Chefman's website as well as brick-and-mortar and online retailers like Best Buy and Target. The retail price is $399.99, which is about £300 / AU$570, though it's not currently sold in the US and Australia. </p><h3 class="article-body__section" id="section-chefman-coffee-station-pro-specs"><span>Chefman Coffee Station Pro: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Chefman Coffee Station Pro</p></td></tr><tr><td class="firstcol " ><p>Type</p></td><td  ><p>Semi-automatic</p></td></tr><tr><td class="firstcol " ><p>Dimensions </p></td><td  ><p>13 x 11.7 x 13.9 inches / 33.02 x 29.72 x 35.31 cm </p></td></tr><tr><td class="firstcol " ><p>Pressure (for espresso brewing)</p></td><td  ><p>20 bars</p></td></tr><tr><td class="firstcol " ><p>Brew styles</p></td><td  ><p>Espresso, single serve, drip, cold press, cold brew</p></td></tr><tr><td class="firstcol " ><p>Milk frother</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Connected device</p></td><td  ><p>No</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-chefman-coffee-station-pro-design"><span>Chefman Coffee Station Pro: design</span></h3><ul><li><strong>Smaller than you might expect </strong></li><li><strong>Has storage for accessories</strong></li><li><strong>Ten in one machine </strong></li></ul><p>The Chefman Coffee Station Pro is designed efficiently so it has a lot of features in its reasonably-sized footprint. The machine provides<strong> </strong>ten different brewing methods: espresso (with grounds or Nespresso capsules), cold press espresso, latte, cappuccino, milk frother, K-cup pods, carafe of drip coffee, drip over ice, cold brew, and instant hot water. You control everything with a touch-screen interface.</p><p>It comes with everything you need to make all of the beverages listed above. The big 100-ounce water tank fits onto the back of the machine. On the coffee side, you get a coffee filter holder and a reusable coffee filter basket. If you prefer, you can use paper filters instead. There is also a K-Cup adapter for brewing K-Cups. The glass carafe holds anywhere from four to twelve cups of coffee and it rests on a warming plate (which has a "hot" indicator light.) When you're brewing a single serve K-Cup rather than using the carafe, there is a fold-down cup platform with a removable rubber trivet for resting a mug. </p><p>On the espresso side, you get a portafilter with three different filters you can put inside. There's small filter for brewing single espresso, a larger one for double espresso, and an adapter for Nespresso capsules. You get a two-sided espresso tool, one side is a measuring scoop and the other side is a tamper. The included 16-ounce milk reservoir can be removed when not in use. </p><p>The Chefman Coffee Station Pro stores its own accessories cleverly. It has a hook on the side to store the portafilter and a compartment on top to store other accessories. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Y9YB6Nmbjacg2cREcRVHG8-1920-80.jpg" alt="Chefman Coffee Station Pro clever accessory storage" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wk7hZg2Kh3AH4cCKCjZFm7-1920-80.jpg" alt="Chefman Coffee Station Pro clever accessory storage" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>When you first set up the Chefman Coffee Station Pro, you'll want to set the clock for the correct time. There is a Delay Brew feature so you can set the machine up when you go to bed and you'll have a hot carafe of drip coffee waiting for you in the morning. The Keep Warm feature will keep your carafe hot for up to two hours.</p><p>There is a hot water spout, which runs separately from the coffee so you don't have to worry about stale coffee taste mixing with your hot water. This is perfect for making hot chocolate, tea, and other hot beverages with ease. I suppose you could even use for making instant ramen or really anything you might need hot water for. It's worth noting that it's hot but not boiling.</p><p>As with any coffee machine, it does need to be cleaned regularly. Since this one has so many features, there's more cleaning that needs to be done. Every time you use it, you'll want to wash any accessories you use, run a clean cycle on the milk frother wand, and wipe down the exterior as needed. Of course you'll want to remove the milk reservoir and refrigerate any unused milk right after use. </p><p>On a weekly basis, empty and wash out the water tank, empty and wash the milk reservoir, run a clean cycle on the espresso side, and flush the frother system if you're using it daily. Every month or two, you'll want to do a deep clean of the frother's internal parts. </p><p>Roughly every 100 cycles (or 50 for hot water), you'll need to descale the coffee, espresso, and hot water systems. The owner's manual included detailed instruction on how to do all of that, plus you can find videos on Chefman's YouTube channel for guided instruction.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DQQiUbYgcoQoBNaSSFbPYb-1920-80.jpg" alt="Chefman Coffee Station Pro cleaning" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/agbmahBTkwqG6b4UX42Qbb-1920-80.jpg" alt="Chefman Coffee Station Pro cleaning" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Design score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-chefman-coffee-station-pro-performance"><span>Chefman Coffee Station Pro: performance</span></h3><ul><li><strong>Fairly easy to use</strong></li><li><strong>Most of the features work well</strong></li><li><strong>Some features don't result in good coffee</strong></li></ul><p>In my testing, most of the drinks I made came out really well. Some came out ok, and some came out actually undrinkable. </p><h2 id="espresso">Espresso </h2><p>The espresso came out fine and it had a nice crema. It was pretty easy to do, just measure your grounds with the provided scoop, pour your grounds in the portafilter with the appropriate filter inside. Use one scoop in the smaller filter for a single espresso or two scoops in the larger filter for a double espresso. Tamp them down firmly with the included tamper, and then twist the portafilter into place. Select your drink from the touch-screen menu and you'll have espresso in just a minute or so. I used a carefully measured flat scoop, and found the espresso to be rather weak, but your tastes may vary.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cmVrx7UrhLFd2vGCW2zEe7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bZoB85HibXkHhGHDQdqrE7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Sn622XwwePVAMNUoDzrLd7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xfoAQdLfhBBBkK7wwfSHe7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UuPkNRRypzGYv9H6GZMgQ7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3Pj5kadrqpK7xoLZG4uoa7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wM9RCuez7jrh2DDQTRMTc7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CBrws3EiA8v8275g3Mi7f7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="espresso-with-nespresso-capsule">Espresso with Nespresso capsule</h2><p>Using the Nespresso capsule basket in the portafilter, you can brew any Nespresso or Nespresso-compatible capsule. Note that this is only for the small original line capsules, not the larger Vertuo line capsules.</p><p>This was a big fail, in my opinion. The capsule was only pierced partway, there was water left in the portafilter, and the resulting brew was sour and weak and had very little crema. It was not worth drinking. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6owZEgA9FFkVLTgquB7maK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QeKvLDSfESHxdyUsMZxvEK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v2iUPHNXTXuqXyfCfzzJLK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/oJWCM7D95QRmffo8cBDHbK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/es6zYWxyvFWErPZPgLRAbK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sDjL7XSiENo8wyjLWj7wZK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>In the photo gallery below, I compare the results of brewing the same kind of Nespresso capsule in both the Chefman Coffee Station Pro and my actual Nespresso machine. In both machines, I brewed it as a small or single espresso. The Nespresso machine results are on the left and the Chefman on the right in both photos.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zJ2Yfheij3286T4amy3ycW-1920-80.jpg" alt="Chefman Coffee Station Pro Nespresso capsule comparison" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5kbzg66RxUXMiR53vRY7gW-1920-80.jpg" alt="Chefman Coffee Station Pro Nespresso capsule comparison" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="latte-and-cappuccino">Latte and cappuccino</h2><p>Technically, a latte and a cappuccino are pretty different. Though they are both espresso drinks with frothed milk added, the proportions are different. A cappuccino is one third espresso, one third steamed milk, and one third milk foam. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YsYTDDNFWBD3QuKNrjuW7P-1920-80.jpg" alt="Chefman Coffee Station Pro cappuccino" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wh4qjQxtRGgN5zg67EGv4P-1920-80.jpg" alt="Chefman Coffee Station Pro cappuccino" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PARpBqkG4Nv4PHiwVRjPEP-1920-80.jpg" alt="Chefman Coffee Station Pro cappuccino" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>A latte is one-third espresso and two thirds steamed milk with a light layer of milk foam on top. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hsTV7rAnyRRkpePTg8sMoU-1920-80.jpg" alt="Chefman Coffee Station Pro latte" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UwmLrHeAs7p3LxRuWV2ioU-1920-80.jpg" alt="Chefman Coffee Station Pro latte" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>You can probably tell from my photos above, they don't look all that different. They didn't taste all that different, either, though they were both delicious.</p><p>I also tried just frothing some milk and then brewing an espresso separately and putting them together. Again, it just made a lovely foamy milky beverage.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/97gsxbYTjHi42Ntq6raYdC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GS7NMM9uPoKhLn9rSeaBcC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dCs7ij7ED5Ptgu4RoyTxaC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eqdsedSi9MN2xUdFe7yedC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-pressed-espresso">Cold-pressed espresso</h2><p>This was just a fail, in my opinion. It was so weak that I couldn't even drink it. Again, that's just my taste, yours may be different.</p><p>Note that pretty much every time you do a cold-pressed espresso brew, the machine will prompt you to run a cooling cycle on the carafe side first in order to prime the machine for cold press. It's not a big deal, but you'll have to factor in the extra time and place a container under it to catch the flushed water.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6e3HQzjTmZQHxwCqF72N76-1920-80.jpg" alt="Chefman Coffee Station Pro cold-pressed espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8ztG5F3UaRHpYPkGDsXK36-1920-80.jpg" alt="Chefman Coffee Station Pro cold-pressed espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ePJsqeDm4oorUCkNzRMTy5-1920-80.jpg" alt="Chefman Coffee Station Pro cold-pressed espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="k-cup">K-Cup</h2><p>Using the included K-Cup adapater on the carafe side of the machine, you can make any K-Cup you like. I actually thought the Chefman Coffee Station Pro did a great job with this one. I'm not generally a fan of K-Cups but this machine brewed it as well as any Keurig machine I've tried. Note that unlike a Keurig machine, you are using a separate adapter part that you'll probably want to wash each time you use it before putting it away. So it is an extra step.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Jsfz8BzichSG7CBj3ZqP55-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V3uwdSr8CNbjHNwr8ydD35-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ptwvkmHi38maXJY8Kein45-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NbxgSe4hZ6uw9JMMEokGz4-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>There is also an option to brew the K-Cup pod as cold brew. But I can't recommend it, unless you like a super weak iced coffee. I used the same kind of pod, but look at the difference.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Rebu9E4mJcxMbEWBBVk4nZ-1920-80.jpg" alt="Chefman Coffee Station Pro cold brew K-cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hfmCMXnb3QdoeAfoimctiZ-1920-80.jpg" alt="Chefman Coffee Station Pro cold brew K-cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fGovWjuNRdCuqMujRJSLjZ-1920-80.jpg" alt="Chefman Coffee Station Pro cold brew K-cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="drip-coffee-in-carafe">Drip coffee in carafe</h2><p>The drip coffee came out great. It was easy to do, just like any traditional drip coffee machine. I used the metal and plastic reusable filter, but you could use a paper filter if you prefer. You have the option to set up a delayed brew, so you can get everything ready the night before and have a hot, fresh carafe of coffee when you wake up. The metal plate under the carafe can be set to keep your carafe warm for up to two hours, and an indicator light will let you know that it's hot. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Z2koRfTUxYZ249y3DQCAvh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xhLo6TzvFHb2JK684SJGrh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Hc3KDv3GqKxFgVn5kbPXwh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jjiwjgKGzpeayKTtmCftyh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rKos5LdLQfd66wJKH8gWxh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-brew-2">Cold Brew </h2><p>The Cold Brew feature brews your coffee slower, cooler, and with less water in order to extract the most flavor and give you less ice melt. This came out very well. It does take longer to brew, and it does usually require running a cool cycle first, but the results are tasty.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XLdkB2LWUmLYNX8fjDoAKc-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pDnF3PRrdXt95esqvPzHvb-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/q44gNCEs9NebL47JFCkLBc-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FRBzQysrsvENHHTit7PPCc-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="over-ice-in-carafe">Over Ice (in carafe)</h2><p>The Over Ice funtion is a little different from the Cold Brew. It's brewed into the carafe just like regular hot coffee but a bit stronger to compensate for ice melt. This worked fine, and it wasn't watered down too much. However, it was less smooth than the Cold Brew method and more bitter to my taste.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GrCo6ZxaKremqDiJuSXZsQ-1920-80.jpg" alt="Chefman Coffee Station Pro brewing over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rGU7eUfNoxFanwKdZgwtoQ-1920-80.jpg" alt="Chefman Coffee Station Pro brewing over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rCfzJTry4DxjSuWp48Y8uQ-1920-80.jpg" alt="Chefman Coffee Station Pro brewing over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="hot-water">Hot Water</h2><p>Hot water comes from a separate spout, not through the coffee system. It works fine and just tastes like pure water with no hint of coffee taste.</p><p>I selected maximum temperature setting, but water measured just 163°F/73°C. So, it's certainly hot enough to make hot cocoa, certain delicate teas, and perhaps your instant ramen. But it's not that all that close to boiling water, which would be 212°F/100°C. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uubEWSjB24e35Ghvw9vDVm-1920-80.jpg" alt="Chefman Coffee Station Pro hot water feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fMCh7Ls4gKxTNdFPfznpWm-1920-80.jpg" alt="Chefman Coffee Station Pro hot water feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 3/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-chefman-coffee-station-pro"><span>Should you buy the Chefman Coffee Station Pro?</span></h3><div ><table><caption>Chefman Coffee Station Pro score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The price is similar to other multi-functional semi-automatic machines</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>The clever design allows for many functions in a not-too-huge footprint</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>This was very much a mixed bag; some types of brew came out great and some definitely not.</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-4">Buy it if</h2><div class="product"><p><strong>You have a multi-coffee-drinker household</strong></p><p>The Chefman Coffee Station Pro does it all: espresso, latte, cappuccino, drip coffee, cold brew, iced coffee, K-cup, Nespresso capsule, and even hot water on demand.</p></div><div class="product"><p><strong>You don't have space for many machines</strong></p><p>While this isn't a small machine, it's certainly a lot smaller than separate machines for all of the different functions.</p></div><div class="product"><p><strong>You want lots of options for guests</strong></p><p>Even if your household doesn't need all of the features, it's nice to have just about any coffee option available for guests.</p></div><h2 id="don-39-t-buy-it-if-4">Don't buy it if</h2><div class="product"><p><strong>It's out of your price range</strong></p><p>You can get a simple espresso machine plus a drip coffee machine and a basic frother for less than this all-in-one.</p></div><div class="product"><p><strong>You want all of the features to be great</strong></p><p>Though there are a lot of ways to brew coffee beverages with this machine, not all of them produce a great result.</p></div><div class="product"><p><strong>You have extremely limited counter space</strong></p><p>Considering how many features it has, the footprint isn't that huge. But it's still quite a bit bigger than most coffee machines.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7e5f9b60-a56f-11f1-9726-d9b5f01a6706" data-action="Deal Block" data-label="You have extremely limited counter spaceConsidering how many features it has, the footprint isn't that huge. But it's still quite a bit bigger than most coffee machines." data-dimension48="You have extremely limited counter spaceConsidering how many features it has, the footprint isn't that huge. But it's still quite a bit bigger than most coffee machines." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-chefman-coffee-station-pro-also-consider"><span>Chefman Coffee Station Pro: also consider</span></h3><div class="product"><a data-dimension112="7e5f9c28-a56f-11f1-975d-b59eab1c980c" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1136px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8TYz8XSYsuFTFr2sc5jM7i" name="Ninja-autobarista-pro-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8TYz8XSYsuFTFr2sc5jM7i-1920-80.png" mos="" align="middle" fullscreen="" width="1136" height="1136" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine </strong></p><p>This machine lacks the drip coffee carafe function and doesn't accept pods, but it has most of the other functions. Plus it has a built-in coffee grinder and comes with two different hoppers you can easily swap out.</p><p><strong>Read my </strong><a href="https://www.techradar.com/home/coffee-machines/the-ninja-autobarista-pro-fully-automatic-espresso-machine-lets-you-make-just-about-any-coffee-creation-you-can-imagine" data-dimension112="7e5f9c28-a56f-11f1-975d-b59eab1c980c" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25=""><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7e5f9c28-a56f-11f1-975d-b59eab1c980c" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="7e5f9c8c-a56f-11f1-8aa0-85f70aa40321" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:714px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="s6V9tf8QxoTvr2hTXeuYd8" name="terra-kaffe-promo-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/s6V9tf8QxoTvr2hTXeuYd8-1920-80.png" mos="" align="middle" fullscreen="" width="714" height="714" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Terra Kaffe TK-02</strong></p><p>No pods here but you can make excellent drip coffee and espresso with just a tap. Use the built-in grinder or the ground coffee chute. The attached milk frother expands this machine's repertoire to six figures. Yes, you read that right. The Terra Kaffe TK-02 connects to an app (and Alexa!) so you can start your brew before you get out of bed.</p><p><strong>Check out my </strong><a href="https://www.techradar.com/home/coffee-machines/terra-kaffe-tk-02-brings-the-high-end-coffee-shop-to-your-home" data-dimension112="7e5f9c8c-a56f-11f1-8aa0-85f70aa40321" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25=""><strong>Terra Kaffe TK-02 review</strong></a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7e5f9c8c-a56f-11f1-8aa0-85f70aa40321" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-chefman-coffee-station-pro"><span>How I tested the Chefman Coffee Station Pro</span></h3><p>I brewed and drank every kind of coffee beverage the Chefman Coffee Station Pro makes. I brewed a Nespresso capsule and a K-cup. I brewed espresso from grounds, both hot and cold-pressed. I frothed milk (barista-style pistachio milk) and added a shot of espresso. I made latte and cappuccino. I brewed a carafe of drip coffee. I made cold brew and coffee over ice. I used the hot water feature, tasted it, and measured the temperature.</p><p><em>First reviewed September 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/coffee-machines/chefman-coffee-station-pro-review</link>
                                                                            <description>
                            <![CDATA[ A clever multi-style coffee maker that handles the basics well, but not all its brewing modes work as well as they should. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wEGSNhopxUTyYpqUUQw4WQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/rqoAwNY9w2yUGQEi5a33mC-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 01 Oct 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Coffee Machines]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Karen Freeman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DDiERCZA8XFtW9uHdwjzpL-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Karen is a world traveler, writer, teacher, family woman, and occasionally a movie extra. She has been writing about Apple, consumer tech, and lifestyle products since 2010 for various publications including TechRadar, CNET, Tom’s Guide, iMore, Macworld, AppAdvice, and WatchAware.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/rqoAwNY9w2yUGQEi5a33mC-1920-80.jpg">
                                                            <media:credit><![CDATA[Karen Freeman / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Chefman Coffee Station Pro brewing carafe of drip coffee]]></media:description>                                                            <media:text><![CDATA[Chefman Coffee Station Pro brewing carafe of drip coffee]]></media:text>
                                <media:title type="plain"><![CDATA[Chefman Coffee Station Pro brewing carafe of drip coffee]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/rqoAwNY9w2yUGQEi5a33mC-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-chefman-coffee-station-pro-two-minute-review"><span>Chefman Coffee Station Pro: two-minute review</span></h3><p>The Chefman Coffee Station Pro is a great idea. People like their coffee brewed in different ways, and it's easy to end up with two or even three coffee machines on the counter to accommodate households with multiple coffee drinkers. For example, my husband usually drinks drip coffee, but occasionally likes an espresso. I rotate between drip, espresso, and iced coffee, depending on my mood and the weather. I also like my Nespresso machine, since the capsules are available in some interesting flavors I occasionally enjoy. I also drink a lot of tea, so an instant hot feature is welcome. We don't often drink lattes or cappuccinos, but when our kids or guest come to visit, they often do. We could easily end up with three different coffee machines (plus a frother and a tea kettle) in our coffee nook, but the Chefman Coffee Station Pro can do all that and more.</p><p>Sounds like a dream, but unfortunately it doesn't do everything well, or even acceptably. For example, it doesn't brew Nespresso capsules fully or correctly, resulting in a weak and tiny brew.  If you don't need every single feature, this machine might be a perfect fit for you because it does a lot of things well. I tested everything and found that it did some things far better than others.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yUfJ4xfmBn923nSXRhGo6B" name="chefman-coffee-station-flat-lay" alt="Chefman Coffee Station with all parts laid out" src="https://cdn.mos.cms.futurecdn.net/yUfJ4xfmBn923nSXRhGo6B-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-chefman-coffee-station-pro-price-and-availability"><span>Chefman Coffee Station Pro: price and availability</span></h3><ul><li><strong>Available on Chefman's website and other retailers</strong></li><li><strong>Retails for $399.99 (about £300 / AU$570)</strong></li><li><strong>Just one colorway, black and silver</strong></li></ul><p>You can buy the Chefman Coffee Station Pro on Chefman's website as well as brick-and-mortar and online retailers like Best Buy and Target. The retail price is $399.99, which is about £300 / AU$570, though it's not currently sold in the US and Australia. </p><h3 class="article-body__section" id="section-chefman-coffee-station-pro-specs"><span>Chefman Coffee Station Pro: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Chefman Coffee Station Pro</p></td></tr><tr><td class="firstcol " ><p>Type</p></td><td  ><p>Semi-automatic</p></td></tr><tr><td class="firstcol " ><p>Dimensions </p></td><td  ><p>13 x 11.7 x 13.9 inches / 33.02 x 29.72 x 35.31 cm </p></td></tr><tr><td class="firstcol " ><p>Pressure (for espresso brewing)</p></td><td  ><p>20 bars</p></td></tr><tr><td class="firstcol " ><p>Brew styles</p></td><td  ><p>Espresso, single serve, drip, cold press, cold brew</p></td></tr><tr><td class="firstcol " ><p>Milk frother</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Connected device</p></td><td  ><p>No</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-chefman-coffee-station-pro-design"><span>Chefman Coffee Station Pro: design</span></h3><ul><li><strong>Smaller than you might expect </strong></li><li><strong>Has storage for accessories</strong></li><li><strong>Ten in one machine </strong></li></ul><p>The Chefman Coffee Station Pro is designed efficiently so it has a lot of features in its reasonably-sized footprint. The machine provides<strong> </strong>ten different brewing methods: espresso (with grounds or Nespresso capsules), cold press espresso, latte, cappuccino, milk frother, K-cup pods, carafe of drip coffee, drip over ice, cold brew, and instant hot water. You control everything with a touch-screen interface.</p><p>It comes with everything you need to make all of the beverages listed above. The big 100-ounce water tank fits onto the back of the machine. On the coffee side, you get a coffee filter holder and a reusable coffee filter basket. If you prefer, you can use paper filters instead. There is also a K-Cup adapter for brewing K-Cups. The glass carafe holds anywhere from four to twelve cups of coffee and it rests on a warming plate (which has a "hot" indicator light.) When you're brewing a single serve K-Cup rather than using the carafe, there is a fold-down cup platform with a removable rubber trivet for resting a mug. </p><p>On the espresso side, you get a portafilter with three different filters you can put inside. There's small filter for brewing single espresso, a larger one for double espresso, and an adapter for Nespresso capsules. You get a two-sided espresso tool, one side is a measuring scoop and the other side is a tamper. The included 16-ounce milk reservoir can be removed when not in use. </p><p>The Chefman Coffee Station Pro stores its own accessories cleverly. It has a hook on the side to store the portafilter and a compartment on top to store other accessories. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Y9YB6Nmbjacg2cREcRVHG8-1920-80.jpg" alt="Chefman Coffee Station Pro clever accessory storage" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wk7hZg2Kh3AH4cCKCjZFm7-1920-80.jpg" alt="Chefman Coffee Station Pro clever accessory storage" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>When you first set up the Chefman Coffee Station Pro, you'll want to set the clock for the correct time. There is a Delay Brew feature so you can set the machine up when you go to bed and you'll have a hot carafe of drip coffee waiting for you in the morning. The Keep Warm feature will keep your carafe hot for up to two hours.</p><p>There is a hot water spout, which runs separately from the coffee so you don't have to worry about stale coffee taste mixing with your hot water. This is perfect for making hot chocolate, tea, and other hot beverages with ease. I suppose you could even use for making instant ramen or really anything you might need hot water for. It's worth noting that it's hot but not boiling.</p><p>As with any coffee machine, it does need to be cleaned regularly. Since this one has so many features, there's more cleaning that needs to be done. Every time you use it, you'll want to wash any accessories you use, run a clean cycle on the milk frother wand, and wipe down the exterior as needed. Of course you'll want to remove the milk reservoir and refrigerate any unused milk right after use. </p><p>On a weekly basis, empty and wash out the water tank, empty and wash the milk reservoir, run a clean cycle on the espresso side, and flush the frother system if you're using it daily. Every month or two, you'll want to do a deep clean of the frother's internal parts. </p><p>Roughly every 100 cycles (or 50 for hot water), you'll need to descale the coffee, espresso, and hot water systems. The owner's manual included detailed instruction on how to do all of that, plus you can find videos on Chefman's YouTube channel for guided instruction.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/DQQiUbYgcoQoBNaSSFbPYb-1920-80.jpg" alt="Chefman Coffee Station Pro cleaning" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/agbmahBTkwqG6b4UX42Qbb-1920-80.jpg" alt="Chefman Coffee Station Pro cleaning" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Design score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-chefman-coffee-station-pro-performance"><span>Chefman Coffee Station Pro: performance</span></h3><ul><li><strong>Fairly easy to use</strong></li><li><strong>Most of the features work well</strong></li><li><strong>Some features don't result in good coffee</strong></li></ul><p>In my testing, most of the drinks I made came out really well. Some came out ok, and some came out actually undrinkable. </p><h2 id="espresso">Espresso </h2><p>The espresso came out fine and it had a nice crema. It was pretty easy to do, just measure your grounds with the provided scoop, pour your grounds in the portafilter with the appropriate filter inside. Use one scoop in the smaller filter for a single espresso or two scoops in the larger filter for a double espresso. Tamp them down firmly with the included tamper, and then twist the portafilter into place. Select your drink from the touch-screen menu and you'll have espresso in just a minute or so. I used a carefully measured flat scoop, and found the espresso to be rather weak, but your tastes may vary.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cmVrx7UrhLFd2vGCW2zEe7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bZoB85HibXkHhGHDQdqrE7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Sn622XwwePVAMNUoDzrLd7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xfoAQdLfhBBBkK7wwfSHe7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UuPkNRRypzGYv9H6GZMgQ7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3Pj5kadrqpK7xoLZG4uoa7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wM9RCuez7jrh2DDQTRMTc7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CBrws3EiA8v8275g3Mi7f7-1920-80.jpg" alt="Chefman Coffee Station Pro making espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="espresso-with-nespresso-capsule">Espresso with Nespresso capsule</h2><p>Using the Nespresso capsule basket in the portafilter, you can brew any Nespresso or Nespresso-compatible capsule. Note that this is only for the small original line capsules, not the larger Vertuo line capsules.</p><p>This was a big fail, in my opinion. The capsule was only pierced partway, there was water left in the portafilter, and the resulting brew was sour and weak and had very little crema. It was not worth drinking. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6owZEgA9FFkVLTgquB7maK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QeKvLDSfESHxdyUsMZxvEK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/v2iUPHNXTXuqXyfCfzzJLK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/oJWCM7D95QRmffo8cBDHbK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/es6zYWxyvFWErPZPgLRAbK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sDjL7XSiENo8wyjLWj7wZK-1920-80.jpg" alt="Chefman Coffee Station Pro brewing Nespresso capsules" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>In the photo gallery below, I compare the results of brewing the same kind of Nespresso capsule in both the Chefman Coffee Station Pro and my actual Nespresso machine. In both machines, I brewed it as a small or single espresso. The Nespresso machine results are on the left and the Chefman on the right in both photos.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zJ2Yfheij3286T4amy3ycW-1920-80.jpg" alt="Chefman Coffee Station Pro Nespresso capsule comparison" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5kbzg66RxUXMiR53vRY7gW-1920-80.jpg" alt="Chefman Coffee Station Pro Nespresso capsule comparison" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="latte-and-cappuccino">Latte and cappuccino</h2><p>Technically, a latte and a cappuccino are pretty different. Though they are both espresso drinks with frothed milk added, the proportions are different. A cappuccino is one third espresso, one third steamed milk, and one third milk foam. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/YsYTDDNFWBD3QuKNrjuW7P-1920-80.jpg" alt="Chefman Coffee Station Pro cappuccino" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wh4qjQxtRGgN5zg67EGv4P-1920-80.jpg" alt="Chefman Coffee Station Pro cappuccino" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PARpBqkG4Nv4PHiwVRjPEP-1920-80.jpg" alt="Chefman Coffee Station Pro cappuccino" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>A latte is one-third espresso and two thirds steamed milk with a light layer of milk foam on top. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hsTV7rAnyRRkpePTg8sMoU-1920-80.jpg" alt="Chefman Coffee Station Pro latte" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UwmLrHeAs7p3LxRuWV2ioU-1920-80.jpg" alt="Chefman Coffee Station Pro latte" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>You can probably tell from my photos above, they don't look all that different. They didn't taste all that different, either, though they were both delicious.</p><p>I also tried just frothing some milk and then brewing an espresso separately and putting them together. Again, it just made a lovely foamy milky beverage.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/97gsxbYTjHi42Ntq6raYdC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GS7NMM9uPoKhLn9rSeaBcC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dCs7ij7ED5Ptgu4RoyTxaC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eqdsedSi9MN2xUdFe7yedC-1920-80.jpg" alt="Chefman Coffee Station Pro frothing milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-pressed-espresso">Cold-pressed espresso</h2><p>This was just a fail, in my opinion. It was so weak that I couldn't even drink it. Again, that's just my taste, yours may be different.</p><p>Note that pretty much every time you do a cold-pressed espresso brew, the machine will prompt you to run a cooling cycle on the carafe side first in order to prime the machine for cold press. It's not a big deal, but you'll have to factor in the extra time and place a container under it to catch the flushed water.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6e3HQzjTmZQHxwCqF72N76-1920-80.jpg" alt="Chefman Coffee Station Pro cold-pressed espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8ztG5F3UaRHpYPkGDsXK36-1920-80.jpg" alt="Chefman Coffee Station Pro cold-pressed espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ePJsqeDm4oorUCkNzRMTy5-1920-80.jpg" alt="Chefman Coffee Station Pro cold-pressed espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="k-cup">K-Cup</h2><p>Using the included K-Cup adapater on the carafe side of the machine, you can make any K-Cup you like. I actually thought the Chefman Coffee Station Pro did a great job with this one. I'm not generally a fan of K-Cups but this machine brewed it as well as any Keurig machine I've tried. Note that unlike a Keurig machine, you are using a separate adapter part that you'll probably want to wash each time you use it before putting it away. So it is an extra step.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Jsfz8BzichSG7CBj3ZqP55-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/V3uwdSr8CNbjHNwr8ydD35-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ptwvkmHi38maXJY8Kein45-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NbxgSe4hZ6uw9JMMEokGz4-1920-80.jpg" alt="Chefman Coffee Station Pro brewing K-Cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>There is also an option to brew the K-Cup pod as cold brew. But I can't recommend it, unless you like a super weak iced coffee. I used the same kind of pod, but look at the difference.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Rebu9E4mJcxMbEWBBVk4nZ-1920-80.jpg" alt="Chefman Coffee Station Pro cold brew K-cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hfmCMXnb3QdoeAfoimctiZ-1920-80.jpg" alt="Chefman Coffee Station Pro cold brew K-cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fGovWjuNRdCuqMujRJSLjZ-1920-80.jpg" alt="Chefman Coffee Station Pro cold brew K-cup" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="drip-coffee-in-carafe">Drip coffee in carafe</h2><p>The drip coffee came out great. It was easy to do, just like any traditional drip coffee machine. I used the metal and plastic reusable filter, but you could use a paper filter if you prefer. You have the option to set up a delayed brew, so you can get everything ready the night before and have a hot, fresh carafe of coffee when you wake up. The metal plate under the carafe can be set to keep your carafe warm for up to two hours, and an indicator light will let you know that it's hot. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Z2koRfTUxYZ249y3DQCAvh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xhLo6TzvFHb2JK684SJGrh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Hc3KDv3GqKxFgVn5kbPXwh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jjiwjgKGzpeayKTtmCftyh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rKos5LdLQfd66wJKH8gWxh-1920-80.jpg" alt="Chefman Coffee Station Pro brewing carafe of drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-brew-2">Cold Brew </h2><p>The Cold Brew feature brews your coffee slower, cooler, and with less water in order to extract the most flavor and give you less ice melt. This came out very well. It does take longer to brew, and it does usually require running a cool cycle first, but the results are tasty.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XLdkB2LWUmLYNX8fjDoAKc-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/pDnF3PRrdXt95esqvPzHvb-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/q44gNCEs9NebL47JFCkLBc-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FRBzQysrsvENHHTit7PPCc-1920-80.jpg" alt="Chefman coffee station pro cold brew" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="over-ice-in-carafe">Over Ice (in carafe)</h2><p>The Over Ice funtion is a little different from the Cold Brew. It's brewed into the carafe just like regular hot coffee but a bit stronger to compensate for ice melt. This worked fine, and it wasn't watered down too much. However, it was less smooth than the Cold Brew method and more bitter to my taste.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GrCo6ZxaKremqDiJuSXZsQ-1920-80.jpg" alt="Chefman Coffee Station Pro brewing over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rGU7eUfNoxFanwKdZgwtoQ-1920-80.jpg" alt="Chefman Coffee Station Pro brewing over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/rCfzJTry4DxjSuWp48Y8uQ-1920-80.jpg" alt="Chefman Coffee Station Pro brewing over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="hot-water">Hot Water</h2><p>Hot water comes from a separate spout, not through the coffee system. It works fine and just tastes like pure water with no hint of coffee taste.</p><p>I selected maximum temperature setting, but water measured just 163°F/73°C. So, it's certainly hot enough to make hot cocoa, certain delicate teas, and perhaps your instant ramen. But it's not that all that close to boiling water, which would be 212°F/100°C. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/uubEWSjB24e35Ghvw9vDVm-1920-80.jpg" alt="Chefman Coffee Station Pro hot water feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fMCh7Ls4gKxTNdFPfznpWm-1920-80.jpg" alt="Chefman Coffee Station Pro hot water feature" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 3/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-chefman-coffee-station-pro"><span>Should you buy the Chefman Coffee Station Pro?</span></h3><div ><table><caption>Chefman Coffee Station Pro score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The price is similar to other multi-functional semi-automatic machines</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>The clever design allows for many functions in a not-too-huge footprint</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>This was very much a mixed bag; some types of brew came out great and some definitely not.</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-4">Buy it if</h2><div class="product"><p><strong>You have a multi-coffee-drinker household</strong></p><p>The Chefman Coffee Station Pro does it all: espresso, latte, cappuccino, drip coffee, cold brew, iced coffee, K-cup, Nespresso capsule, and even hot water on demand.</p></div><div class="product"><p><strong>You don't have space for many machines</strong></p><p>While this isn't a small machine, it's certainly a lot smaller than separate machines for all of the different functions.</p></div><div class="product"><p><strong>You want lots of options for guests</strong></p><p>Even if your household doesn't need all of the features, it's nice to have just about any coffee option available for guests.</p></div><h2 id="don-39-t-buy-it-if-4">Don't buy it if</h2><div class="product"><p><strong>It's out of your price range</strong></p><p>You can get a simple espresso machine plus a drip coffee machine and a basic frother for less than this all-in-one.</p></div><div class="product"><p><strong>You want all of the features to be great</strong></p><p>Though there are a lot of ways to brew coffee beverages with this machine, not all of them produce a great result.</p></div><div class="product"><p><strong>You have extremely limited counter space</strong></p><p>Considering how many features it has, the footprint isn't that huge. But it's still quite a bit bigger than most coffee machines.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7e5f9b60-a56f-11f1-9726-d9b5f01a6706" data-action="Deal Block" data-label="You have extremely limited counter spaceConsidering how many features it has, the footprint isn't that huge. But it's still quite a bit bigger than most coffee machines." data-dimension48="You have extremely limited counter spaceConsidering how many features it has, the footprint isn't that huge. But it's still quite a bit bigger than most coffee machines." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-chefman-coffee-station-pro-also-consider"><span>Chefman Coffee Station Pro: also consider</span></h3><div class="product"><a data-dimension112="7e5f9c28-a56f-11f1-975d-b59eab1c980c" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1136px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="8TYz8XSYsuFTFr2sc5jM7i" name="Ninja-autobarista-pro-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/8TYz8XSYsuFTFr2sc5jM7i-1920-80.png" mos="" align="middle" fullscreen="" width="1136" height="1136" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine </strong></p><p>This machine lacks the drip coffee carafe function and doesn't accept pods, but it has most of the other functions. Plus it has a built-in coffee grinder and comes with two different hoppers you can easily swap out.</p><p><strong>Read my </strong><a href="https://www.techradar.com/home/coffee-machines/the-ninja-autobarista-pro-fully-automatic-espresso-machine-lets-you-make-just-about-any-coffee-creation-you-can-imagine" data-dimension112="7e5f9c28-a56f-11f1-975d-b59eab1c980c" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25=""><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7e5f9c28-a56f-11f1-975d-b59eab1c980c" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="7e5f9c8c-a56f-11f1-8aa0-85f70aa40321" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:714px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="s6V9tf8QxoTvr2hTXeuYd8" name="terra-kaffe-promo-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/s6V9tf8QxoTvr2hTXeuYd8-1920-80.png" mos="" align="middle" fullscreen="" width="714" height="714" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Terra Kaffe TK-02</strong></p><p>No pods here but you can make excellent drip coffee and espresso with just a tap. Use the built-in grinder or the ground coffee chute. The attached milk frother expands this machine's repertoire to six figures. Yes, you read that right. The Terra Kaffe TK-02 connects to an app (and Alexa!) so you can start your brew before you get out of bed.</p><p><strong>Check out my </strong><a href="https://www.techradar.com/home/coffee-machines/terra-kaffe-tk-02-brings-the-high-end-coffee-shop-to-your-home" data-dimension112="7e5f9c8c-a56f-11f1-8aa0-85f70aa40321" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25=""><strong>Terra Kaffe TK-02 review</strong></a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7e5f9c8c-a56f-11f1-8aa0-85f70aa40321" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-chefman-coffee-station-pro"><span>How I tested the Chefman Coffee Station Pro</span></h3><p>I brewed and drank every kind of coffee beverage the Chefman Coffee Station Pro makes. I brewed a Nespresso capsule and a K-cup. I brewed espresso from grounds, both hot and cold-pressed. I frothed milk (barista-style pistachio milk) and added a shot of espresso. I made latte and cappuccino. I brewed a carafe of drip coffee. I made cold brew and coffee over ice. I used the hot water feature, tasted it, and measured the temperature.</p><p><em>First reviewed September 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Roborock Qrevo 2 Pro review: outstanding cleaning at a sensible price ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-roborock-qvero-2-pro-30-second-review"><span>Roborock Qvero 2 Pro: 30-second review</span></h3><p>The Qrevo 2 Pro is the latest robot vacuum and mop combo cleaner from Roborock and includes detachable mop plates to help ensure it doesn’t get carpets wet while cleaning.</p><p>Cleaning performance is a match for some of the most expensive options on the market with its mopping being as good as I have ever tested making it a fantastic pick for the price.</p><p>It is relatively tall so it can’t clean under low furniture and its hard floor cleaning isn’t flawless but it is an excellent option, especially when on sale.</p><h3 class="article-body__section" id="section-roborock-qrevo-2-pro-price-availability"><span>Roborock Qrevo 2 Pro: price &amp; availability</span></h3><ul><li><strong>List price: $799.99 / £649.99 / AU$1,199 </strong></li><li><strong>Launch date: August 2026</strong></li><li><strong>Availability: worldwide </strong></li></ul><p>The Roborock Qrevo 2 Pro sits right on the line between premium and mid-range robot vacuums, with a list price $799.99 / £649.99 / AU$1,199. However, almost immediately after launch I have already seen it get a significant discount to $549 / £549.99, tipping it firmly into the more affordable category — especially considering the features and performance.</p><p>Even at full price it sits below the Roborock’s Curv models and produces similar results (although it doesn’t have the AdaptLift chassis for getting over higher thresholds between rooms) making it an excellent value pick. If you’re looking to spend less, the Roborock Q7 is a good alternative although it has much lower suction power and doesn’t have an auto-empty dock.</p><p>A branded floor cleaner compatible with the Qrevo 2 Pro is available on Roborock’s website but they don’t push this hard and after testing it without it, it’s definitely not required.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LrKZEnFhKQJuA7T26JLzhB" name="Roborock Qrevo 2 Pro dock dust bag-1" alt="Roborock Qrevo 2 Pro dock open, showing dust bag" src="https://cdn.mos.cms.futurecdn.net/LrKZEnFhKQJuA7T26JLzhB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">You don't have to use Roborock's own floor cleaner, but you will need to buy disposable dust bags </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>What you will need to buy are disposable dust bags as these are thrown away once full. A three-pack costs $39.90 in the US, and a six-pack is £31.99 in the UK, so this needs to be considered in the running costs. I have tested Roborocks with cheaper unbranded dust bags in the past and not encountered problems, but check model compatibility before ordering.</p><p>You can also buy replacement brushes, mop pads, filters and other parts in case anything breaks. </p><ul><li><strong>Value score: 5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-roborock-qrevo-2-pro-review-design"><span>Roborock Qrevo 2 Pro review: design</span></h3><ul><li><strong>Smart-looking robot and dock</strong></li><li><strong>Can’t get under low furniture</strong></li><li><strong>Smart home integration</strong></li></ul><p>Available in all white or black (currently only available in white in the UK and Australia) it is pretty unfussy in terms of design with the dock a bit squarer than the slightly bulbous base stations of Roborock’s Curv series.</p><p>The robot is circular, measuring 14 inches wide with a 6-inch cleaning opening underneath for picking up dirt.</p><p>The lidar scanner the robot uses to navigate sits in a cage on top of the robot, increasing its height and reducing its clearance so it won’t be able to vacuum under low furniture like a sofa, unlike Roborock’s Qvrevo CurvX with its retractable lidar scanner.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CaVGxiF8EKtFaFn67ctoyB-1920-80.jpg" alt="Roborock Qrevo 2 Pro cleaning under edge of furniture" /><figcaption>The robot's lidar scanner doesn't retract, so it can't fit under low furniture<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uHFyQ2JFGsyLcepWSofZuB-1920-80.jpg" alt="Roborock Qrevo 2 Pro in its dock" /><figcaption>The dock is easy to set up, provided you have sufficient space<small role="credit">Future</small></figcaption></figure></figure><p>Setting the dock up is easy, involving just attaching the ramp to the front of the dock, filling the clean water tank and plugging it in. The more difficult part may be finding a place for it as it needs to sit on a hard floor with at least 1.5 inches either side and 27.5 inches of clear space in front of the dock. It also needs to be within reach of a power socket and somewhere you won’t trip up over it or mind looking at it everyday.</p><p>Smart home integration is included with it compatible with <a href="https://www.techradar.com/news/matter-will-revolutionize-your-smart-home-heres-everything-you-need-to-know">the Matter standard</a>, Google Home, and Amazon Alexa</p><ul><li><strong>Design score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-roborock-qrevo-2-pro-performance"><span>Roborock Qrevo 2 Pro: performance</span></h3><ul><li><strong>Excellent mopping on maximum settings</strong></li><li><strong>Good vacuum performance</strong></li><li><strong>Did get caught on charging cable</strong></li></ul><p>Set up is simple, you will need to find an appropriate spot for the dock on a hard floor with plenty of space either side. You then download the app, pair the robot and then you can send it on a discovery run around your house to build a map.</p><p>Once it has scanned the space you can then edit the map to combine or divide spaces into rooms, mark areas as no-go zones, manually designate floor types and mark things like curtains and furniture. I found that aside from ensuring the rooms are divided correctly I didn’t have to make any changes to get it to work well, with the carpeted areas successfully detected.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6LNj7vJspstxuHzD6SEuyB" name="Roborock Qrevo 2 Pro underneath-1" alt="Underneath of Roborock Qrevo 2 Pro" src="https://cdn.mos.cms.futurecdn.net/6LNj7vJspstxuHzD6SEuyB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The robot has detachable mop pads, which it leaves in its dock after mopping your floors </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>After setup you can use the app to kickstart cleans of the whole map, one or more selected rooms or a designated zone clean you can mark on the map. As well as ad hoc cleans you can set routines for different types of cleans from deep intensive cleans, to specific after dinner cleans of smaller zones or light maintenance vacuuming without mopping.</p><p>As the Qrevo 2 Pro has detachable mops, rather than vacuuming and mopping room by room it first goes around the carpeted areas of the whole space you are cleaning first. Once that is complete it returns to the dock to reattach the mop heads before cleaning the rest of the hard floors.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AFMYPnWv9y8sCiiJAXX47C" name="Roborock Qrevo 2 Pro obstacle test-1" alt="Roborock Qrevo 2 Pro avoiding obstacles on the floor" src="https://cdn.mos.cms.futurecdn.net/AFMYPnWv9y8sCiiJAXX47C-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Obstacle detection was generally good, though the Qrevo 2 Pro did get caught on a USB charging cable </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Cleaning performance is OK on hard floors, although it can lead to some spreading of larger debris as the edge cleaning arm sent rice grains skittering across the floor. It did better with fine particles, although there was still some tea visible on a pass on the standard cleaning settings.</p><p>It handled larger particles much better on carpet, picking up almost every single grain of rice, although there was some tea left after the first pass.</p><p>As with most robot vacuums, its edge cleaning wasn't great on carpet, but the sweeping brush does well to move material into the vacuum’s path on hard floors..</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790607075785-manmdg66k *, #fv-chart-1790607075785-manmdg66k *:before, #fv-chart-1790607075785-manmdg66k *:after, #fv-chart-1790607075785-manmdg66k-slideshow *, #fv-chart-1790607075785-manmdg66k-slideshow *:before, #fv-chart-1790607075785-manmdg66k-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790607075785-manmdg66k, #fv-chart-1790607075785-manmdg66k-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790607075785-manmdg66k {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1790607075785-manmdg66k .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1790607075785-manmdg66k .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790607075785-manmdg66k.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790607075785-manmdg66k.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607075785-manmdg66k .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607075785-manmdg66k-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1790607075785-manmdg66k .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790607075785-manmdg66k .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790607075785-manmdg66k .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1790607075785-manmdg66k .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1790607075785-manmdg66k .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1790607075785-manmdg66k .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607075785-manmdg66k .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790607075785-manmdg66k .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790607075785-manmdg66k .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1790607075785-manmdg66k .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1790607075785-manmdg66k.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-expand-btn, #fv-chart-1790607075785-manmdg66k .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-expand-btn:hover, #fv-chart-1790607075785-manmdg66k .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1790607075785-manmdg66k .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790607075785-manmdg66k .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1790607075785-manmdg66k .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1790607075785-manmdg66k .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1790607075785-manmdg66k .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1790607075785-manmdg66k .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790607075785-manmdg66k .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790607075785-manmdg66k .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790607075785-manmdg66k .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-row, #fv-chart-1790607075785-manmdg66k .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790607075785-manmdg66k.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607075785-manmdg66k.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790607075785-manmdg66k.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790607075785-manmdg66k .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1790607075785-manmdg66k .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790607075785-manmdg66k .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790607075785-manmdg66k .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1790607075785-manmdg66k .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790607075785-manmdg66k .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790607075785-manmdg66k .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790607075785-manmdg66k .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1790607075785-manmdg66k .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-pie-container,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stacked-product,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-grouped-bar-product,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stacked-product,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-label,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-grouped-product-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-label,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-container,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-cluster,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-container,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-x-axis-wrapper,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-x-axis-label-space,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-x-axis-chart-space,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-benchmark-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-dropdown-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-carousel-nav-btn,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-chart-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-chart-subhead,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-header,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-wrapper,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-vs,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-container,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607075785-manmdg66k.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790607075785-manmdg66k .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-row,#fv-chart-1790607075785-manmdg66k .fv-stacked-product,#fv-chart-1790607075785-manmdg66k .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-label,#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-container,#fv-chart-1790607075785-manmdg66k .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607075785-manmdg66k .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-logo,#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607075785-manmdg66k.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Vacuum test","description": "Testing performance of Roborock vacuum cleaner on carpeted floor","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-28T14:51:15.785Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1790607075785-manmdg66k" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790607075785-manmdg66k-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Testing performance of Roborock vacuum cleaner on carpeted floor" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/Laf7t7Qow84BUutMk94b5C.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/Laf7t7Qow84BUutMk94b5C.jpg" alt="After vacuuming" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/7qNX2jFNFixVwWmm22UU5C.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/7qNX2jFNFixVwWmm22UU5C.jpg" alt="Before vacuuming" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790607075785-manmdg66k', false); });} else {initialize('fv-chart-1790607075785-manmdg66k', false);}})();</script></div><p>During the obstacle avoidance tests it did well to identify the shoe and sock, staying clear as it cleaned around them but it did go over the charging cable, getting it stuck in the cleaning brushes and needing me to rescue it before it could continue cleaning.</p><p>During my mopping tests on first pass it did a reasonable job taking up a fair bit of the ketchup although there was a hint of the soy sauce remaining. Trying a second clean on maximum water flow and cleaning settings it did a fantastic job cleaning off even the dried on patches of ketchup.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790607282055-ehf5hye65 *, #fv-chart-1790607282055-ehf5hye65 *:before, #fv-chart-1790607282055-ehf5hye65 *:after, #fv-chart-1790607282055-ehf5hye65-slideshow *, #fv-chart-1790607282055-ehf5hye65-slideshow *:before, #fv-chart-1790607282055-ehf5hye65-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790607282055-ehf5hye65, #fv-chart-1790607282055-ehf5hye65-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790607282055-ehf5hye65 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1790607282055-ehf5hye65 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1790607282055-ehf5hye65 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790607282055-ehf5hye65.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790607282055-ehf5hye65.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607282055-ehf5hye65 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607282055-ehf5hye65-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1790607282055-ehf5hye65 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1790607282055-ehf5hye65 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1790607282055-ehf5hye65 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1790607282055-ehf5hye65 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1790607282055-ehf5hye65.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-expand-btn, #fv-chart-1790607282055-ehf5hye65 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-expand-btn:hover, #fv-chart-1790607282055-ehf5hye65 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790607282055-ehf5hye65 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1790607282055-ehf5hye65 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1790607282055-ehf5hye65 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790607282055-ehf5hye65 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-row, #fv-chart-1790607282055-ehf5hye65 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790607282055-ehf5hye65.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607282055-ehf5hye65.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790607282055-ehf5hye65.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790607282055-ehf5hye65 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790607282055-ehf5hye65 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1790607282055-ehf5hye65 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790607282055-ehf5hye65 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790607282055-ehf5hye65 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1790607282055-ehf5hye65 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-pie-container,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stacked-product,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-grouped-bar-product,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stacked-product,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-label,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-grouped-product-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-label,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-container,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-cluster,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-container,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-x-axis-wrapper,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-x-axis-label-space,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-x-axis-chart-space,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-benchmark-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-dropdown-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-carousel-nav-btn,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-chart-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-chart-subhead,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-header,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-wrapper,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-vs,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-container,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607282055-ehf5hye65.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790607282055-ehf5hye65 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-row,#fv-chart-1790607282055-ehf5hye65 .fv-stacked-product,#fv-chart-1790607282055-ehf5hye65 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-label,#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-container,#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607282055-ehf5hye65 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-logo,#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607282055-ehf5hye65.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Mopping test","description": "Floor before and after mopping test with Roborock vacuum cleaner","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-28T14:54:42.055Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1790607282055-ehf5hye65" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790607282055-ehf5hye65-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Floor before and after mopping test with Roborock vacuum cleaner" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/FzksNo9yr46XWRx2psThXB.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/FzksNo9yr46XWRx2psThXB.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/f2u425W6m73JfDkkxky8qA.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/f2u425W6m73JfDkkxky8qA.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790607282055-ehf5hye65', false); });} else {initialize('fv-chart-1790607282055-ehf5hye65', false);}})();</script></div><p>While the most intensive cleaning took some time and left the floor relatively wet, it was some of the best mopping I have ever seen from a robot. You do need to delve into the settings to get the best performance and it probably is only practical for small zone cleaning but it's still a lot less effort than getting out a mop and bucket.</p><p>On regular cleaning settings it can manage around five regular rooms before needing recharging so depending on your home it may need to recharge before completing a full clean. Recharging takes around four hours.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790607426801-muejn7a43 *, #fv-chart-1790607426801-muejn7a43 *:before, #fv-chart-1790607426801-muejn7a43 *:after, #fv-chart-1790607426801-muejn7a43-slideshow *, #fv-chart-1790607426801-muejn7a43-slideshow *:before, #fv-chart-1790607426801-muejn7a43-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790607426801-muejn7a43, #fv-chart-1790607426801-muejn7a43-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790607426801-muejn7a43 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1790607426801-muejn7a43 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1790607426801-muejn7a43 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790607426801-muejn7a43.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790607426801-muejn7a43.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607426801-muejn7a43 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607426801-muejn7a43-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1790607426801-muejn7a43 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790607426801-muejn7a43 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790607426801-muejn7a43 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1790607426801-muejn7a43 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1790607426801-muejn7a43 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1790607426801-muejn7a43 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607426801-muejn7a43 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790607426801-muejn7a43 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790607426801-muejn7a43 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1790607426801-muejn7a43 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1790607426801-muejn7a43.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-expand-btn, #fv-chart-1790607426801-muejn7a43 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-expand-btn:hover, #fv-chart-1790607426801-muejn7a43 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790607426801-muejn7a43 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1790607426801-muejn7a43 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1790607426801-muejn7a43 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1790607426801-muejn7a43 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790607426801-muejn7a43 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790607426801-muejn7a43 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790607426801-muejn7a43 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-row, #fv-chart-1790607426801-muejn7a43 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790607426801-muejn7a43.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607426801-muejn7a43.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790607426801-muejn7a43.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790607426801-muejn7a43 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790607426801-muejn7a43 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1790607426801-muejn7a43 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790607426801-muejn7a43 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790607426801-muejn7a43 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1790607426801-muejn7a43 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-pie-container,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stacked-product,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-grouped-bar-product,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stacked-product,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-label,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-grouped-product-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-label,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-container,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-cluster,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-container,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-x-axis-wrapper,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-x-axis-label-space,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-x-axis-chart-space,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-benchmark-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-dropdown-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-carousel-nav-btn,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-chart-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-chart-subhead,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-header,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-wrapper,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-vs,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-container,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607426801-muejn7a43.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790607426801-muejn7a43 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-row,#fv-chart-1790607426801-muejn7a43 .fv-stacked-product,#fv-chart-1790607426801-muejn7a43 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-label,#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-container,#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607426801-muejn7a43 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-logo,#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607426801-muejn7a43.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Edge cleaning","description": "Cleaning edge of hard floor with Roborock vacuum cleaner to test vacuuming","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-28T14:57:06.801Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1790607426801-muejn7a43" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790607426801-muejn7a43-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Cleaning edge of hard floor with Roborock vacuum cleaner to test vacuuming" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/ZBHXBFwYVSYJ4bDnM8YwXB.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ZBHXBFwYVSYJ4bDnM8YwXB.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/R5qJvTD7XSrgDvojD6nHvB.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/R5qJvTD7XSrgDvojD6nHvB.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790607426801-muejn7a43', false); });} else {initialize('fv-chart-1790607426801-muejn7a43', false);}})();</script></div><p>It’s not loud in operation, registering around 60db while cleaning on carpet. The dock emptying is a little louder, topping out at 69db (around the level of normal conversation), although this is pretty brief so shouldn’t be too disruptive.</p><p>The Qrevo 2 Pro uses dust bags so emptying it of dirt is quick and neat, although that does add ongoing costs to using it. You will also need to empty the waste water and refill the clean water tanks regularly which is easy to do (as long as you leave enough clearance room above the robot) as these lift out of the dock and then can be unclipped open for emptying or filling.</p><p>Smart home integration worked well for starting a whole house clean but I did have a little trouble using the room clean function for custom named rooms. Naming a room one of the default names such as Kitchen or Living Room worked fine, but a custom name such as Utility Room sparked a whole house clean instead.</p><p>While custom room names would be helpful, even getting default room cleaning to work is not a guarantee with any of the robot vacuum cleaners I have tested so, relatively, this is a success.</p><ul><li><strong>Performance score: 4.5 out of 5</strong></li></ul><h2 id="roborock-qrevo-2-pro-app">Roborock Qrevo 2 Pro: app</h2><ul><li><strong>Easy setup</strong></li><li><strong>Clear house map</strong></li><li><strong>Can set frequent types of clean and schedule cleans</strong></li></ul><p>The app is simple to use, although I did find it can sometimes get a little lost if you select your cleaning mode too quickly, meaning you have to move to another mode and back again before getting the options you need.</p><p>Once you select the robot you are shown the map of your home and have four tabs to select the type of clean you want, 'Full', 'Room', 'Zone' and 'Routine'. 'Full' starts a clean of the whole map and to the left of the play button there is a button for adjusting the type of clean including whether you want to vacuum and mop, just vacuum or just mop. There are also controls for the level of suction, waterflow, amount of times you want the robot to clean the area and the intensity of the cleaning pattern.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/297TZfb4vgsbHpjGMAv8TA-1920-80.png" alt="App home screen for Roborock Qrevo 2 Pro" /><figcaption>The app is simple to use provided you don't hop between modes too quickly<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GzLjqQU4Yi8XXK6mCJRLXA-1920-80.png" alt="House map for Roborock Qrevo 2 Pro in app" /><figcaption>Select your robot to see a map of your home<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cVb9V3L46ABA3NkALET6JA-1920-80.png" alt="Cleaning settings for Roborock Qrevo 2 Pro in app" /><figcaption>You can adjust the settings for the vacuum and mop independently<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Uo3hAVTPa2yjVAQAGuLMbA-1920-80.png" alt="Routines and scheduling for Roborock Qrevo 2 Pro in app" /><figcaption>The 'Routine' option allows you to schedule different types of cleaning<small role="credit">Future</small></figcaption></figure></figure><p>Room allows you to select one or more rooms to clean, while Zones lets you pick multiple rectangular sections of your chosen size on the map for it to clean, allowing you to spot clean specific sections of floor. </p><p>'Routine' is the final option and allows you to create shortcuts for regular types of clean that will then be available from the opening screen on the app. This is useful for setting up things like zone cleans that focus around a dining table following a meal or if you want a predefined deep clean compared with a light maintenance clean.</p><p>Despite the name, 'Routine' doesn’t include any scheduling functionality by default. That is hidden somewhat in the settings menu, but can be used with scheduled cleans (if your home doesn’t regularly have bits of Lego on the floor like mine does). </p><ul><li><strong>App score: 5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-roborock-qrevo-2-pro"><span>Should you buy the Roborock Qrevo 2 Pro?</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value for money</p></td><td  ><p>Even at full price the Qrevo 2 Pro represents good value and at a discount price it is a fantastic deal. You will need to consider the price of disposable dust bags in the running costs but you’ll be hard pressed to find these features and performance for less.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>The design is more focused on function than form but it is unfussy and designed to fit into most homes. The tall mounting of the lidar scanner will stop it from cleaning under low furniture.</p><p><br /></p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Vacuuming performance is good and mopping is excellent although It did have trouble picking up on a charging cable in our object avoidance tests leading it to get stuck.</p><p><br /></p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>The app makes it easy to control, with simple options for choosing the type and location of cleans as well as a clear map of your home.</p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-5">Buy it if</h2><div class="product"><p><strong>You have a lot of hard flooring that needs regular mopping. </strong></p><p>On the maximum settings, it cleaned as well as any robot mop I have tested and even if you have carpeted areas the removable mop heads mean you don’t have to worry about it getting those damp.</p></div><div class="product"><p><strong>You don’t want to spend over $1,000</strong></p><p>Cleaning performance matches almost any robot vacuum regardless of price making it a great value option if you are shopping on a budget.</p></div><div class="product"><p><strong>You hate the mess of emptying dust bins</strong></p><p>Disposable bags may add to the running costs but emptying the dock is a quick and clean enough that you don’t have to get another vacuum out to clean up after.</p></div><h2 id="don-39-t-buy-it-if-5">Don't buy it if</h2><div class="product"><p><strong>You only have carpeted floors</strong></p><p>The mop functionality adds to the price so if you’re not going to use it look at vacuum only options.</p></div><div class="product"><p><strong>You have high thresholds between rooms</strong></p><p>More expensive options add the ability to navigate over higher divisions between rooms, the Qvero 2 Pro will be able to handle most regular passageways but its not designed for complex terrain.</p></div><div class="product"><p><strong>You’re looking for the cheapest viable option</strong></p><p>While it does offer excellent value, you can pick up a good robovac for less if your budget is tight.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="fce094fc-bb55-11f1-9fbf-37f14852bbb7" data-action="Deal Block" data-label="You’re looking for the cheapest viable optionWhile it does offer excellent value, you can pick up a good robovac for less if your budget is tight." data-dimension48="You’re looking for the cheapest viable optionWhile it does offer excellent value, you can pick up a good robovac for less if your budget is tight." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-roborock-qrevo-2-pro"><span>How I tested the Roborock Qrevo 2 Pro</span></h3><p>I tested the Roborock Qrevo 2 Pro over a period of over two weeks, using it as an everyday cleaner of a busy household. </p><p>As well as day to day use I put it through a series of tests, assessing its performance picking up fine particles and larger debris on carpet and hard floor by having it clean an area with a set amount of rice and tea sprinkled on the surface. Edge cleaning was also tested using tea on the edge of a carpet and hard floor area.</p><p>Mopping performance was tested by having the robot clean up a spill of soy sauce, as well as tackling a patch of dried ketchup. After an initial pass on regular settings, this was then retested with cleaning settings set to maximum.</p><p><em>First reviewed September 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/robot-vacuums/roborock-qrevo-2-pro-review</link>
                                                                            <description>
                            <![CDATA[ Excellent mopping and good vacuuming put it on a par with much more expensive rivals, and make it a great choice if you have mixed floor types. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">H64QBYHg3hTv2DAEcLnUnn</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/9JTgMwZZqkPudD82tm8kNB-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 28 Sep 2026 16:15:45 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Robot Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Tim Gee ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/e5mNB7vdKmiKgzc5SzXNMB-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/9JTgMwZZqkPudD82tm8kNB-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Roborock Qrevo 2 Pro in its dock]]></media:description>                                                            <media:text><![CDATA[Roborock Qrevo 2 Pro in its dock]]></media:text>
                                <media:title type="plain"><![CDATA[Roborock Qrevo 2 Pro in its dock]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/9JTgMwZZqkPudD82tm8kNB-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-roborock-qvero-2-pro-30-second-review"><span>Roborock Qvero 2 Pro: 30-second review</span></h3><p>The Qrevo 2 Pro is the latest robot vacuum and mop combo cleaner from Roborock and includes detachable mop plates to help ensure it doesn’t get carpets wet while cleaning.</p><p>Cleaning performance is a match for some of the most expensive options on the market with its mopping being as good as I have ever tested making it a fantastic pick for the price.</p><p>It is relatively tall so it can’t clean under low furniture and its hard floor cleaning isn’t flawless but it is an excellent option, especially when on sale.</p><h3 class="article-body__section" id="section-roborock-qrevo-2-pro-price-availability"><span>Roborock Qrevo 2 Pro: price &amp; availability</span></h3><ul><li><strong>List price: $799.99 / £649.99 / AU$1,199 </strong></li><li><strong>Launch date: August 2026</strong></li><li><strong>Availability: worldwide </strong></li></ul><p>The Roborock Qrevo 2 Pro sits right on the line between premium and mid-range robot vacuums, with a list price $799.99 / £649.99 / AU$1,199. However, almost immediately after launch I have already seen it get a significant discount to $549 / £549.99, tipping it firmly into the more affordable category — especially considering the features and performance.</p><p>Even at full price it sits below the Roborock’s Curv models and produces similar results (although it doesn’t have the AdaptLift chassis for getting over higher thresholds between rooms) making it an excellent value pick. If you’re looking to spend less, the Roborock Q7 is a good alternative although it has much lower suction power and doesn’t have an auto-empty dock.</p><p>A branded floor cleaner compatible with the Qrevo 2 Pro is available on Roborock’s website but they don’t push this hard and after testing it without it, it’s definitely not required.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LrKZEnFhKQJuA7T26JLzhB" name="Roborock Qrevo 2 Pro dock dust bag-1" alt="Roborock Qrevo 2 Pro dock open, showing dust bag" src="https://cdn.mos.cms.futurecdn.net/LrKZEnFhKQJuA7T26JLzhB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">You don't have to use Roborock's own floor cleaner, but you will need to buy disposable dust bags </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>What you will need to buy are disposable dust bags as these are thrown away once full. A three-pack costs $39.90 in the US, and a six-pack is £31.99 in the UK, so this needs to be considered in the running costs. I have tested Roborocks with cheaper unbranded dust bags in the past and not encountered problems, but check model compatibility before ordering.</p><p>You can also buy replacement brushes, mop pads, filters and other parts in case anything breaks. </p><ul><li><strong>Value score: 5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-roborock-qrevo-2-pro-review-design"><span>Roborock Qrevo 2 Pro review: design</span></h3><ul><li><strong>Smart-looking robot and dock</strong></li><li><strong>Can’t get under low furniture</strong></li><li><strong>Smart home integration</strong></li></ul><p>Available in all white or black (currently only available in white in the UK and Australia) it is pretty unfussy in terms of design with the dock a bit squarer than the slightly bulbous base stations of Roborock’s Curv series.</p><p>The robot is circular, measuring 14 inches wide with a 6-inch cleaning opening underneath for picking up dirt.</p><p>The lidar scanner the robot uses to navigate sits in a cage on top of the robot, increasing its height and reducing its clearance so it won’t be able to vacuum under low furniture like a sofa, unlike Roborock’s Qvrevo CurvX with its retractable lidar scanner.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CaVGxiF8EKtFaFn67ctoyB-1920-80.jpg" alt="Roborock Qrevo 2 Pro cleaning under edge of furniture" /><figcaption>The robot's lidar scanner doesn't retract, so it can't fit under low furniture<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uHFyQ2JFGsyLcepWSofZuB-1920-80.jpg" alt="Roborock Qrevo 2 Pro in its dock" /><figcaption>The dock is easy to set up, provided you have sufficient space<small role="credit">Future</small></figcaption></figure></figure><p>Setting the dock up is easy, involving just attaching the ramp to the front of the dock, filling the clean water tank and plugging it in. The more difficult part may be finding a place for it as it needs to sit on a hard floor with at least 1.5 inches either side and 27.5 inches of clear space in front of the dock. It also needs to be within reach of a power socket and somewhere you won’t trip up over it or mind looking at it everyday.</p><p>Smart home integration is included with it compatible with <a href="https://www.techradar.com/news/matter-will-revolutionize-your-smart-home-heres-everything-you-need-to-know">the Matter standard</a>, Google Home, and Amazon Alexa</p><ul><li><strong>Design score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-roborock-qrevo-2-pro-performance"><span>Roborock Qrevo 2 Pro: performance</span></h3><ul><li><strong>Excellent mopping on maximum settings</strong></li><li><strong>Good vacuum performance</strong></li><li><strong>Did get caught on charging cable</strong></li></ul><p>Set up is simple, you will need to find an appropriate spot for the dock on a hard floor with plenty of space either side. You then download the app, pair the robot and then you can send it on a discovery run around your house to build a map.</p><p>Once it has scanned the space you can then edit the map to combine or divide spaces into rooms, mark areas as no-go zones, manually designate floor types and mark things like curtains and furniture. I found that aside from ensuring the rooms are divided correctly I didn’t have to make any changes to get it to work well, with the carpeted areas successfully detected.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6LNj7vJspstxuHzD6SEuyB" name="Roborock Qrevo 2 Pro underneath-1" alt="Underneath of Roborock Qrevo 2 Pro" src="https://cdn.mos.cms.futurecdn.net/6LNj7vJspstxuHzD6SEuyB-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The robot has detachable mop pads, which it leaves in its dock after mopping your floors </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>After setup you can use the app to kickstart cleans of the whole map, one or more selected rooms or a designated zone clean you can mark on the map. As well as ad hoc cleans you can set routines for different types of cleans from deep intensive cleans, to specific after dinner cleans of smaller zones or light maintenance vacuuming without mopping.</p><p>As the Qrevo 2 Pro has detachable mops, rather than vacuuming and mopping room by room it first goes around the carpeted areas of the whole space you are cleaning first. Once that is complete it returns to the dock to reattach the mop heads before cleaning the rest of the hard floors.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AFMYPnWv9y8sCiiJAXX47C" name="Roborock Qrevo 2 Pro obstacle test-1" alt="Roborock Qrevo 2 Pro avoiding obstacles on the floor" src="https://cdn.mos.cms.futurecdn.net/AFMYPnWv9y8sCiiJAXX47C-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1440" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Obstacle detection was generally good, though the Qrevo 2 Pro did get caught on a USB charging cable </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Cleaning performance is OK on hard floors, although it can lead to some spreading of larger debris as the edge cleaning arm sent rice grains skittering across the floor. It did better with fine particles, although there was still some tea visible on a pass on the standard cleaning settings.</p><p>It handled larger particles much better on carpet, picking up almost every single grain of rice, although there was some tea left after the first pass.</p><p>As with most robot vacuums, its edge cleaning wasn't great on carpet, but the sweeping brush does well to move material into the vacuum’s path on hard floors..</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790607075785-manmdg66k *, #fv-chart-1790607075785-manmdg66k *:before, #fv-chart-1790607075785-manmdg66k *:after, #fv-chart-1790607075785-manmdg66k-slideshow *, #fv-chart-1790607075785-manmdg66k-slideshow *:before, #fv-chart-1790607075785-manmdg66k-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790607075785-manmdg66k, #fv-chart-1790607075785-manmdg66k-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790607075785-manmdg66k {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1790607075785-manmdg66k .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1790607075785-manmdg66k .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790607075785-manmdg66k.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790607075785-manmdg66k.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607075785-manmdg66k .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607075785-manmdg66k-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1790607075785-manmdg66k-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1790607075785-manmdg66k .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790607075785-manmdg66k .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790607075785-manmdg66k .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1790607075785-manmdg66k .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790607075785-manmdg66k .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790607075785-manmdg66k .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1790607075785-manmdg66k .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1790607075785-manmdg66k .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607075785-manmdg66k .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607075785-manmdg66k .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790607075785-manmdg66k .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790607075785-manmdg66k .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1790607075785-manmdg66k .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1790607075785-manmdg66k.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-expand-btn, #fv-chart-1790607075785-manmdg66k .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-expand-btn:hover, #fv-chart-1790607075785-manmdg66k .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1790607075785-manmdg66k .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1790607075785-manmdg66k .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790607075785-manmdg66k .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1790607075785-manmdg66k .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790607075785-manmdg66k .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1790607075785-manmdg66k .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1790607075785-manmdg66k .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1790607075785-manmdg66k .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790607075785-manmdg66k .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790607075785-manmdg66k .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790607075785-manmdg66k .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790607075785-manmdg66k .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-row, #fv-chart-1790607075785-manmdg66k .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790607075785-manmdg66k.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607075785-manmdg66k.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790607075785-manmdg66k.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790607075785-manmdg66k .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1790607075785-manmdg66k .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790607075785-manmdg66k .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790607075785-manmdg66k .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790607075785-manmdg66k .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1790607075785-manmdg66k .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790607075785-manmdg66k .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790607075785-manmdg66k .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790607075785-manmdg66k .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790607075785-manmdg66k .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790607075785-manmdg66k .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1790607075785-manmdg66k .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-pie-container,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stacked-product,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-grouped-bar-product,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stacked-product,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-label,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-grouped-product-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-label,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-container,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-cluster,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-container,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-x-axis-wrapper,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-x-axis-label-space,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-x-axis-chart-space,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-benchmark-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-dropdown-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-carousel-nav-btn,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-chart-title,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-chart-subhead,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-header,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-wrapper,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-vs,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select-container,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-versus-select,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607075785-manmdg66k.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790607075785-manmdg66k .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-row,#fv-chart-1790607075785-manmdg66k .fv-stacked-product,#fv-chart-1790607075785-manmdg66k .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-label,#fv-chart-1790607075785-manmdg66k .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-container,#fv-chart-1790607075785-manmdg66k .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607075785-manmdg66k .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607075785-manmdg66k .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607075785-manmdg66k .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607075785-manmdg66k .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-logo,#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607075785-manmdg66k .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607075785-manmdg66k .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607075785-manmdg66k .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607075785-manmdg66k.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Vacuum test","description": "Testing performance of Roborock vacuum cleaner on carpeted floor","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-28T14:51:15.785Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1790607075785-manmdg66k" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790607075785-manmdg66k-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Testing performance of Roborock vacuum cleaner on carpeted floor" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/Laf7t7Qow84BUutMk94b5C.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/Laf7t7Qow84BUutMk94b5C.jpg" alt="After vacuuming" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/7qNX2jFNFixVwWmm22UU5C.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/7qNX2jFNFixVwWmm22UU5C.jpg" alt="Before vacuuming" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790607075785-manmdg66k', false); });} else {initialize('fv-chart-1790607075785-manmdg66k', false);}})();</script></div><p>During the obstacle avoidance tests it did well to identify the shoe and sock, staying clear as it cleaned around them but it did go over the charging cable, getting it stuck in the cleaning brushes and needing me to rescue it before it could continue cleaning.</p><p>During my mopping tests on first pass it did a reasonable job taking up a fair bit of the ketchup although there was a hint of the soy sauce remaining. Trying a second clean on maximum water flow and cleaning settings it did a fantastic job cleaning off even the dried on patches of ketchup.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790607282055-ehf5hye65 *, #fv-chart-1790607282055-ehf5hye65 *:before, #fv-chart-1790607282055-ehf5hye65 *:after, #fv-chart-1790607282055-ehf5hye65-slideshow *, #fv-chart-1790607282055-ehf5hye65-slideshow *:before, #fv-chart-1790607282055-ehf5hye65-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790607282055-ehf5hye65, #fv-chart-1790607282055-ehf5hye65-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790607282055-ehf5hye65 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1790607282055-ehf5hye65 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1790607282055-ehf5hye65 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790607282055-ehf5hye65.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790607282055-ehf5hye65.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607282055-ehf5hye65 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607282055-ehf5hye65-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1790607282055-ehf5hye65-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1790607282055-ehf5hye65 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1790607282055-ehf5hye65 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1790607282055-ehf5hye65 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790607282055-ehf5hye65 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1790607282055-ehf5hye65 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1790607282055-ehf5hye65.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-expand-btn, #fv-chart-1790607282055-ehf5hye65 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-expand-btn:hover, #fv-chart-1790607282055-ehf5hye65 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1790607282055-ehf5hye65 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790607282055-ehf5hye65 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1790607282055-ehf5hye65 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1790607282055-ehf5hye65 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790607282055-ehf5hye65 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-row, #fv-chart-1790607282055-ehf5hye65 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790607282055-ehf5hye65.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607282055-ehf5hye65.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790607282055-ehf5hye65.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790607282055-ehf5hye65 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790607282055-ehf5hye65 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790607282055-ehf5hye65 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1790607282055-ehf5hye65 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790607282055-ehf5hye65 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790607282055-ehf5hye65 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1790607282055-ehf5hye65 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-pie-container,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stacked-product,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-grouped-bar-product,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stacked-product,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-label,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-grouped-product-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-label,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-container,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-cluster,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-container,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-x-axis-wrapper,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-x-axis-label-space,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-x-axis-chart-space,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-benchmark-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-dropdown-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-carousel-nav-btn,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-chart-title,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-chart-subhead,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-header,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-wrapper,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-vs,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select-container,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-versus-select,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607282055-ehf5hye65.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790607282055-ehf5hye65 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-row,#fv-chart-1790607282055-ehf5hye65 .fv-stacked-product,#fv-chart-1790607282055-ehf5hye65 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-label,#fv-chart-1790607282055-ehf5hye65 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-container,#fv-chart-1790607282055-ehf5hye65 .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607282055-ehf5hye65 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607282055-ehf5hye65 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607282055-ehf5hye65 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-logo,#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607282055-ehf5hye65 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607282055-ehf5hye65 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607282055-ehf5hye65 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607282055-ehf5hye65.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Mopping test","description": "Floor before and after mopping test with Roborock vacuum cleaner","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-28T14:54:42.055Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1790607282055-ehf5hye65" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790607282055-ehf5hye65-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Floor before and after mopping test with Roborock vacuum cleaner" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/FzksNo9yr46XWRx2psThXB.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/FzksNo9yr46XWRx2psThXB.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/f2u425W6m73JfDkkxky8qA.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/f2u425W6m73JfDkkxky8qA.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790607282055-ehf5hye65', false); });} else {initialize('fv-chart-1790607282055-ehf5hye65', false);}})();</script></div><p>While the most intensive cleaning took some time and left the floor relatively wet, it was some of the best mopping I have ever seen from a robot. You do need to delve into the settings to get the best performance and it probably is only practical for small zone cleaning but it's still a lot less effort than getting out a mop and bucket.</p><p>On regular cleaning settings it can manage around five regular rooms before needing recharging so depending on your home it may need to recharge before completing a full clean. Recharging takes around four hours.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1790607426801-muejn7a43 *, #fv-chart-1790607426801-muejn7a43 *:before, #fv-chart-1790607426801-muejn7a43 *:after, #fv-chart-1790607426801-muejn7a43-slideshow *, #fv-chart-1790607426801-muejn7a43-slideshow *:before, #fv-chart-1790607426801-muejn7a43-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1790607426801-muejn7a43, #fv-chart-1790607426801-muejn7a43-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1790607426801-muejn7a43 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1790607426801-muejn7a43 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1790607426801-muejn7a43 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1790607426801-muejn7a43.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1790607426801-muejn7a43.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607426801-muejn7a43 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1790607426801-muejn7a43-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1790607426801-muejn7a43-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1790607426801-muejn7a43 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1790607426801-muejn7a43 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1790607426801-muejn7a43 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1790607426801-muejn7a43 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1790607426801-muejn7a43 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1790607426801-muejn7a43 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1790607426801-muejn7a43 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1790607426801-muejn7a43 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607426801-muejn7a43 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1790607426801-muejn7a43 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1790607426801-muejn7a43 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1790607426801-muejn7a43 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1790607426801-muejn7a43 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1790607426801-muejn7a43.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-expand-btn, #fv-chart-1790607426801-muejn7a43 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-expand-btn:hover, #fv-chart-1790607426801-muejn7a43 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1790607426801-muejn7a43 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1790607426801-muejn7a43 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1790607426801-muejn7a43 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1790607426801-muejn7a43 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1790607426801-muejn7a43 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1790607426801-muejn7a43 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1790607426801-muejn7a43 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1790607426801-muejn7a43 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-row, #fv-chart-1790607426801-muejn7a43 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1790607426801-muejn7a43.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607426801-muejn7a43.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1790607426801-muejn7a43.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1790607426801-muejn7a43 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1790607426801-muejn7a43 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1790607426801-muejn7a43 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1790607426801-muejn7a43 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1790607426801-muejn7a43 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1790607426801-muejn7a43 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1790607426801-muejn7a43 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1790607426801-muejn7a43 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-pie-container,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stacked-product,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-grouped-bar-product,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stacked-product,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-label,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-grouped-product-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-label,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-container,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-cluster,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-container,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-x-axis-wrapper,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-x-axis-label-space,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-x-axis-chart-space,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-benchmark-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-dropdown-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-carousel-nav-btn,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-chart-title,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-chart-subhead,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-header,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-wrapper,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-vs,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select-container,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-versus-select,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-btn,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-logo,#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-icon,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607426801-muejn7a43.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1790607426801-muejn7a43 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-row,#fv-chart-1790607426801-muejn7a43 .fv-stacked-product,#fv-chart-1790607426801-muejn7a43 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-label,#fv-chart-1790607426801-muejn7a43 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-container,#fv-chart-1790607426801-muejn7a43 .fv-bar-cluster {width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1790607426801-muejn7a43 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1790607426801-muejn7a43 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-label-space {display: none !important;}#fv-chart-1790607426801-muejn7a43 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1790607426801-muejn7a43 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-logo,#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1790607426801-muejn7a43 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1790607426801-muejn7a43 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1790607426801-muejn7a43 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1790607426801-muejn7a43.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Edge cleaning","description": "Cleaning edge of hard floor with Roborock vacuum cleaner to test vacuuming","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-28T14:57:06.801Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1790607426801-muejn7a43" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1790607426801-muejn7a43-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Cleaning edge of hard floor with Roborock vacuum cleaner to test vacuuming" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/ZBHXBFwYVSYJ4bDnM8YwXB.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ZBHXBFwYVSYJ4bDnM8YwXB.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/R5qJvTD7XSrgDvojD6nHvB.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/R5qJvTD7XSrgDvojD6nHvB.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1790607426801-muejn7a43', false); });} else {initialize('fv-chart-1790607426801-muejn7a43', false);}})();</script></div><p>It’s not loud in operation, registering around 60db while cleaning on carpet. The dock emptying is a little louder, topping out at 69db (around the level of normal conversation), although this is pretty brief so shouldn’t be too disruptive.</p><p>The Qrevo 2 Pro uses dust bags so emptying it of dirt is quick and neat, although that does add ongoing costs to using it. You will also need to empty the waste water and refill the clean water tanks regularly which is easy to do (as long as you leave enough clearance room above the robot) as these lift out of the dock and then can be unclipped open for emptying or filling.</p><p>Smart home integration worked well for starting a whole house clean but I did have a little trouble using the room clean function for custom named rooms. Naming a room one of the default names such as Kitchen or Living Room worked fine, but a custom name such as Utility Room sparked a whole house clean instead.</p><p>While custom room names would be helpful, even getting default room cleaning to work is not a guarantee with any of the robot vacuum cleaners I have tested so, relatively, this is a success.</p><ul><li><strong>Performance score: 4.5 out of 5</strong></li></ul><h2 id="roborock-qrevo-2-pro-app">Roborock Qrevo 2 Pro: app</h2><ul><li><strong>Easy setup</strong></li><li><strong>Clear house map</strong></li><li><strong>Can set frequent types of clean and schedule cleans</strong></li></ul><p>The app is simple to use, although I did find it can sometimes get a little lost if you select your cleaning mode too quickly, meaning you have to move to another mode and back again before getting the options you need.</p><p>Once you select the robot you are shown the map of your home and have four tabs to select the type of clean you want, 'Full', 'Room', 'Zone' and 'Routine'. 'Full' starts a clean of the whole map and to the left of the play button there is a button for adjusting the type of clean including whether you want to vacuum and mop, just vacuum or just mop. There are also controls for the level of suction, waterflow, amount of times you want the robot to clean the area and the intensity of the cleaning pattern.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/297TZfb4vgsbHpjGMAv8TA-1920-80.png" alt="App home screen for Roborock Qrevo 2 Pro" /><figcaption>The app is simple to use provided you don't hop between modes too quickly<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GzLjqQU4Yi8XXK6mCJRLXA-1920-80.png" alt="House map for Roborock Qrevo 2 Pro in app" /><figcaption>Select your robot to see a map of your home<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cVb9V3L46ABA3NkALET6JA-1920-80.png" alt="Cleaning settings for Roborock Qrevo 2 Pro in app" /><figcaption>You can adjust the settings for the vacuum and mop independently<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Uo3hAVTPa2yjVAQAGuLMbA-1920-80.png" alt="Routines and scheduling for Roborock Qrevo 2 Pro in app" /><figcaption>The 'Routine' option allows you to schedule different types of cleaning<small role="credit">Future</small></figcaption></figure></figure><p>Room allows you to select one or more rooms to clean, while Zones lets you pick multiple rectangular sections of your chosen size on the map for it to clean, allowing you to spot clean specific sections of floor. </p><p>'Routine' is the final option and allows you to create shortcuts for regular types of clean that will then be available from the opening screen on the app. This is useful for setting up things like zone cleans that focus around a dining table following a meal or if you want a predefined deep clean compared with a light maintenance clean.</p><p>Despite the name, 'Routine' doesn’t include any scheduling functionality by default. That is hidden somewhat in the settings menu, but can be used with scheduled cleans (if your home doesn’t regularly have bits of Lego on the floor like mine does). </p><ul><li><strong>App score: 5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-roborock-qrevo-2-pro"><span>Should you buy the Roborock Qrevo 2 Pro?</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value for money</p></td><td  ><p>Even at full price the Qrevo 2 Pro represents good value and at a discount price it is a fantastic deal. You will need to consider the price of disposable dust bags in the running costs but you’ll be hard pressed to find these features and performance for less.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>The design is more focused on function than form but it is unfussy and designed to fit into most homes. The tall mounting of the lidar scanner will stop it from cleaning under low furniture.</p><p><br /></p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Vacuuming performance is good and mopping is excellent although It did have trouble picking up on a charging cable in our object avoidance tests leading it to get stuck.</p><p><br /></p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>The app makes it easy to control, with simple options for choosing the type and location of cleans as well as a clear map of your home.</p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-5">Buy it if</h2><div class="product"><p><strong>You have a lot of hard flooring that needs regular mopping. </strong></p><p>On the maximum settings, it cleaned as well as any robot mop I have tested and even if you have carpeted areas the removable mop heads mean you don’t have to worry about it getting those damp.</p></div><div class="product"><p><strong>You don’t want to spend over $1,000</strong></p><p>Cleaning performance matches almost any robot vacuum regardless of price making it a great value option if you are shopping on a budget.</p></div><div class="product"><p><strong>You hate the mess of emptying dust bins</strong></p><p>Disposable bags may add to the running costs but emptying the dock is a quick and clean enough that you don’t have to get another vacuum out to clean up after.</p></div><h2 id="don-39-t-buy-it-if-5">Don't buy it if</h2><div class="product"><p><strong>You only have carpeted floors</strong></p><p>The mop functionality adds to the price so if you’re not going to use it look at vacuum only options.</p></div><div class="product"><p><strong>You have high thresholds between rooms</strong></p><p>More expensive options add the ability to navigate over higher divisions between rooms, the Qvero 2 Pro will be able to handle most regular passageways but its not designed for complex terrain.</p></div><div class="product"><p><strong>You’re looking for the cheapest viable option</strong></p><p>While it does offer excellent value, you can pick up a good robovac for less if your budget is tight.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="fce094fc-bb55-11f1-9fbf-37f14852bbb7" data-action="Deal Block" data-label="You’re looking for the cheapest viable optionWhile it does offer excellent value, you can pick up a good robovac for less if your budget is tight." data-dimension48="You’re looking for the cheapest viable optionWhile it does offer excellent value, you can pick up a good robovac for less if your budget is tight." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-roborock-qrevo-2-pro"><span>How I tested the Roborock Qrevo 2 Pro</span></h3><p>I tested the Roborock Qrevo 2 Pro over a period of over two weeks, using it as an everyday cleaner of a busy household. </p><p>As well as day to day use I put it through a series of tests, assessing its performance picking up fine particles and larger debris on carpet and hard floor by having it clean an area with a set amount of rice and tea sprinkled on the surface. Edge cleaning was also tested using tea on the edge of a carpet and hard floor area.</p><p>Mopping performance was tested by having the robot clean up a spill of soy sauce, as well as tackling a patch of dried ketchup. After an initial pass on regular settings, this was then retested with cleaning settings set to maximum.</p><p><em>First reviewed September 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ ​​​​The Eufy Omni E35 boasts huge suction power, good mopping performance, and self-cleaning ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-eufy-omni-e35-two-minute-review"><span>Eufy Omni E35: two-minute review</span></h3><p>The Eufy Omni E35 is a near-perfect <a href="https://www.techradar.com/home/robot-vacuums/best-robot-vacuum">robot vacuum cleaner</a> and mop. It fits into the Eufy range below its flagship S series, but above the cheaper C and older X series. The headline figure of 35,000 Pa suction is seriously impressive, and so too is the E35’s ability to keep itself clean by cleverly preventing fine dust from blocking the filter.</p><p>The charge dock empties the dust bin, replenishes the mopping water tank, then washes and dries the mop with hot water and warm air, for truly hands-off cleaning. Navigation is also strong, the Eufy app works very well, and the E35’s overall cleaning performance fully justifies the four-figure price tag.</p><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="TEAURV664q92cNjJK9BeSD" name="Eufy Omni E35-18" alt="Eufy Omni E35 robot vacuum" src="https://cdn.mos.cms.futurecdn.net/TEAURV664q92cNjJK9BeSD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The E35 lacks the fragrance diffuser, water ozonator and more advanced, AI-powered navigation tech of the pricier Omni S2, but by cutting those Eufy has created a robovac that focuses on what really matters — cleaning your floors and, crucially, keeping itself clean too.</p><p>It’s the self-cleaning that impresses most here, with the mop still looking brand-new after weeks of use, the roller free from tangled hair, and the dust bin filter not caked in dust. Add that to the E35’s strong suction and pivoting mop that stretches into the edges of every room while pushing down to scrub stains and scraping itself clean as it goes, and this is truly a set-it-and-forget-it robovac.</p><h3 class="article-body__section" id="section-eufy-omni-e35-price-and-availability"><span>Eufy Omni E35: price and availability</span></h3><ul><li><strong>List price: $1,299.99 / £999 (about AU$1,830)</strong></li><li><strong>Launched: September 2026</strong></li></ul><p>The Omni E35 is the new flagship of Eufy’s E series of robotic vacuum cleaners. It sits above the E25 and E38, but below the company’s top-end S tier and overall flagship, the Omni S2.</p><p>At £999 (or $1,299.99 in the US; Australian price to be confirmed), the E35 is £100 more than the E28, but sits comfortably below the older £1,299 S1 and £1,599 S2.</p><p>Interestingly, the E35 has slightly more suction power than the range-topping S2, and features much of the same self-cleaning and anti-tangle tech. But it misses out on the S2’s fragrance system, water electrolysis function, and more advanced vision system — all of which helps explain the price difference, and also why the newer model’s base station is more compact.</p><p>Announced at the IFA technology trade show in September 2026, the Eufy Omni E35 is available now.</p><ul><li><strong>Value for money score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-e35-specifications"><span>Eufy Omni E35: specifications</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Feature</p></td><td  ><p>Specification</p></td></tr><tr><td class="firstcol " ><p>Max suction</p></td><td  ><p>35,000 Pa</p></td></tr><tr><td class="firstcol " ><p>Robot diameter</p></td><td  ><p>14.2 in (360 mm)</p></td></tr><tr><td class="firstcol " ><p>Robot height</p></td><td  ><p>4.6 in (116 mm)</p></td></tr><tr><td class="firstcol " ><p>Dock dimensions</p></td><td  ><p>14.6 x 17.6 x 16.2 in / 270 x 447 x 411 mm</p></td></tr><tr><td class="firstcol " ><p>Dust bin volume (base)</p></td><td  ><p>2.5 liters</p></td></tr><tr><td class="firstcol " ><p>Water tank volume (base)</p></td><td  ><p>2.5 liters clean / 2.4 liters dirty</p></td></tr><tr><td class="firstcol " ><p>Base type</p></td><td  ><p>Charging self-emptying, refilling, hot-water mop washing, hot-water drying</p></td></tr><tr><td class="firstcol " ><p>Max threshold clearance</p></td><td  ><p>1.2 in (30 mm)</p></td></tr><tr><td class="firstcol " ><p>Mop type</p></td><td  ><p>Self-cleaning roller</p></td></tr><tr><td class="firstcol " ><p>Mop pad lifting</p></td><td  ><p>Automatic on carpet</p></td></tr><tr><td class="firstcol " ><p>Max runtime</p></td><td  ><p>180 minutes</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-eufy-omni-e35-design"><span>Eufy Omni E35: design</span></h3><ul><li><strong>Charge station with dusty bag, water tanks, mop cleaning and drying function</strong></li><li><strong>Self-cleaning roller mop with edge-cleaning design</strong></li><li><strong>Dual detangling brushes </strong></li></ul><p>The Omni E35 continues Eufy’s trend of making its robotic vacuums more compact, while increasing performance. The robot itself is broadly similar to most other members of the Omni family — more on that in a moment — but the docking station is where a reduction in bulk is most obvious. It makes the X10 Pro, my go-to recommendation from just a couple of years ago, look ancient.</p><p>The E35 dock is shorter and sleeker, with a glossy plastic front, a neat bit of silver trim above the robot’s parking space, and a couple of discreet integrated handles for lifting out the clean and dirty water tanks. At about 16 inches (around 40cm) tall, and about the same depth front to back, including the robot when parked, the whole system is pleasingly compact. So much so, you’d be forgiven for wrongly thinking this is an entry-level robovac with limited performance.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jeKh93A7LWfgVXA2q9HjQD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LoZKLBrQBWsx4QcpZuGgPD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CV7ZhnsPo6FBbTNXW2jyWD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tEN4LEWAP54WEC7Y7NWLGD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/P3qoCWSJHNKK2R7iaXpkFD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Inside that compact dock there’s a charger and dust bag, two tanks for clean and dirty water, and a system that washes the mop with 60C (140F) hot water then dries it with 55C (131F) hot air. There’s also a compartment for installing Eufy’s own floor detergent (one bottle is included in the box), and Eufy says the system can operate entirely hands-free for up to 60 days. This will depend on the size of your home and how frequently you clean, of course, but it’s an impressive claim nonetheless.</p><p>The robot itself measures 4.6 in (116mm) tall and 14.2 in (360mm) in diameter, making it slightly larger in both directions than the Eufy S2, and fractionally taller than the Dyson Spot+Scrub AI. It’s also slightly taller than my trusty Eufy X10 Pro, and while the E35 managed to clean beneath all of my furniture, you’ll want to check it against yours to be sure it’ll fit.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jVYjJ8gqdLMsi4XtwjGJQD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CZakRWNfEEcHiPTHQAF5FD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uX49xWjRrUPFfvBVgVyKFD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ERHcKTCiewr5do4cxDQkED-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Eufy claims a maximum threshold clearance of 1.2 inches (30.5mm), which isn’t as impressive as the Omni S2, but I’ve had no issues with it driving up from wooden floors onto carpeting.</p><p>A clever piece of design sees fine dust separated and ushered into the robot’s onboard bin before it reaches the filter. Eufy claims this ensures the E35 retains its headline 35,000 Pa suction power for longer, since the filter doesn’t get clogged up quite so quickly. After testing I found dust had started to settle in the filter, but this was easily cleaned and didn’t appear to affect performance. There’s also an anti-tangle comb to stop hair wrapping around the roller brush.</p><ul><li><strong>Design score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-e35-performance"><span>Eufy Omni E35: performance</span></h3><ul><li><strong>Excellent vacuuming</strong></li><li><strong>Very good mopping</strong></li><li><strong>Fully cleans and dries itself reliably</strong></li></ul><p>Eufy’s E series of robotic vacuums has impressed for a few years now, so my expectations were high when the E35 arrived. Thankfully, the E35 delivered. The setup process will be familiar to anyone who has used a Eufy Omni, or really any robotic vacuum cleaner, before.</p><p>Assembly takes just a couple of minutes, then it’s just a case of filling the clean water tank, installing the included detergent bottle, switching it on and following the instructions of the Eufy app. The E35 then completed a mapping expedition, driving into every room and quickly using its vision system to map the walls, floors and doorways.</p><p>Furniture isn’t automatically added to the map, as it is with the pricier Omni S2, but I’ve never cared much for that feature and would rather see the floor plan unobscured.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662423095-ng0fonoi0 *, #fv-chart-1789662423095-ng0fonoi0 *:before, #fv-chart-1789662423095-ng0fonoi0 *:after, #fv-chart-1789662423095-ng0fonoi0-slideshow *, #fv-chart-1789662423095-ng0fonoi0-slideshow *:before, #fv-chart-1789662423095-ng0fonoi0-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662423095-ng0fonoi0, #fv-chart-1789662423095-ng0fonoi0-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662423095-ng0fonoi0 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662423095-ng0fonoi0 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662423095-ng0fonoi0.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662423095-ng0fonoi0 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662423095-ng0fonoi0 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662423095-ng0fonoi0 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662423095-ng0fonoi0.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-expand-btn, #fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-expand-btn:hover, #fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row, #fv-chart-1789662423095-ng0fonoi0 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662423095-ng0fonoi0.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662423095-ng0fonoi0.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662423095-ng0fonoi0.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662423095-ng0fonoi0 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-pie-container,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stacked-product,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-grouped-bar-product,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stacked-product,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-label,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-grouped-product-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-label,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-container,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-cluster,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-container,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-x-axis-label-space,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-benchmark-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-dropdown-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-chart-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-chart-subhead,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-header,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-vs,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-container,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662423095-ng0fonoi0.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662423095-ng0fonoi0 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row,#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-product,#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label,#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-container,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-logo,#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662423095-ng0fonoi0.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Carpet cleaning test 1","description": "Vacuuming crumbs from carpeted floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:03.095Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662423095-ng0fonoi0" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662423095-ng0fonoi0-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming crumbs from carpeted floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/ab2fBmoNVTzG9pZCQ8aMjG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ab2fBmoNVTzG9pZCQ8aMjG.jpg" alt="Carpet after vacuuming" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/QeS87en4RyWorRdqpmTmnG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/QeS87en4RyWorRdqpmTmnG.jpg" alt="Carpet with crumbs" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662423095-ng0fonoi0', false); });} else {initialize('fv-chart-1789662423095-ng0fonoi0', false);}})();</script></div><p>As with all robotic vacuums, I had to manually adjust the E35’s map slightly, repositioning some walls and naming each of the rooms. It’s not really a failing of the vision system, just a part of the setup process. That said, the robot mistakenly added an enormous room to the sides of my kitchen and living room that doesn’t really exist. I imagine it saw through to the garden and decided that was part of the floor plan, but frustratingly phantom rooms can’t be deleted, so I binned the entire map and started again. The second map was created accurately, and remained so throughout the rest of my month-long test.</p><p>The headline figure for this robot is its 35,000 Pa of maximum suction power. This is actually 5,000 Pa more than the flagship Omni S2, and provides fantastic results on carpet and hard floors alike. Going back to my X10 Pro again – a vacuum that I awarded four stars just two years ago, and launched at £800 / $800 – and that manages just 8,000 Pa, a quarter of the new E35.</p><p>The result of all that power is deeply impressive cleaning performance. The vacuuming is especially good, with carpets visibly cleaner after using Max mode. It’s probably overkill for a little-and-often cleaning schedule, but if the battery can survive a full carpet vacuum in Max mode, why wouldn’t you use it?</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662435817-p844seqfk *, #fv-chart-1789662435817-p844seqfk *:before, #fv-chart-1789662435817-p844seqfk *:after, #fv-chart-1789662435817-p844seqfk-slideshow *, #fv-chart-1789662435817-p844seqfk-slideshow *:before, #fv-chart-1789662435817-p844seqfk-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662435817-p844seqfk, #fv-chart-1789662435817-p844seqfk-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662435817-p844seqfk {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662435817-p844seqfk .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662435817-p844seqfk .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662435817-p844seqfk.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662435817-p844seqfk.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662435817-p844seqfk .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662435817-p844seqfk-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662435817-p844seqfk .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662435817-p844seqfk .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662435817-p844seqfk .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662435817-p844seqfk .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662435817-p844seqfk .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662435817-p844seqfk .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662435817-p844seqfk .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662435817-p844seqfk .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662435817-p844seqfk .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662435817-p844seqfk .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662435817-p844seqfk.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-expand-btn, #fv-chart-1789662435817-p844seqfk .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-expand-btn:hover, #fv-chart-1789662435817-p844seqfk .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662435817-p844seqfk .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662435817-p844seqfk .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662435817-p844seqfk .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662435817-p844seqfk .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662435817-p844seqfk .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662435817-p844seqfk .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662435817-p844seqfk .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662435817-p844seqfk .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662435817-p844seqfk .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-row, #fv-chart-1789662435817-p844seqfk .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662435817-p844seqfk.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662435817-p844seqfk.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662435817-p844seqfk.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662435817-p844seqfk .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662435817-p844seqfk .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662435817-p844seqfk .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662435817-p844seqfk .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662435817-p844seqfk .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662435817-p844seqfk .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662435817-p844seqfk .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662435817-p844seqfk .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662435817-p844seqfk .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-pie-container,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stacked-product,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-grouped-bar-product,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stacked-product,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-label,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-grouped-product-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-label,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-container,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-cluster,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-container,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-x-axis-label-space,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-benchmark-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-dropdown-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-chart-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-chart-subhead,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-header,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-vs,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-container,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662435817-p844seqfk.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662435817-p844seqfk .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-row,#fv-chart-1789662435817-p844seqfk .fv-stacked-product,#fv-chart-1789662435817-p844seqfk .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-label,#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-container,#fv-chart-1789662435817-p844seqfk .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662435817-p844seqfk .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-logo,#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662435817-p844seqfk.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Carpet cleaning test 2","description": "Vacuuming oats from carpeted floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:15.817Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662435817-p844seqfk" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662435817-p844seqfk-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming oats from carpeted floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/ToeZntqV3hV2Q7HvUjwiLG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ToeZntqV3hV2Q7HvUjwiLG.jpg" alt="Oats vacuumed from carpet" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/3P3U9DpNjAojxsipX2PYQG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/3P3U9DpNjAojxsipX2PYQG.jpg" alt="Oats on carpet" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662435817-p844seqfk', false); });} else {initialize('fv-chart-1789662435817-p844seqfk', false);}})();</script></div><p>I often left it in Max for the kitchen and living room, or switched down to the middling Turbo mode for bigger cleans in a bid to avoid charging mid-task. It’s also worth noting how the robot automatically increases suction when carpet or rugs are detected.</p><p>After a fortnight of regular use — and being impressed by the E35’s performance – I began TechRadar’s specific robovac tests. Vacuuming is first tested with a crumb mix made of flour and crushed biscuit spread across both carpet and hard floors, then oats are scattered across the same areas to test its ability to pick up larger debris.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662446064-xfo8dug44 *, #fv-chart-1789662446064-xfo8dug44 *:before, #fv-chart-1789662446064-xfo8dug44 *:after, #fv-chart-1789662446064-xfo8dug44-slideshow *, #fv-chart-1789662446064-xfo8dug44-slideshow *:before, #fv-chart-1789662446064-xfo8dug44-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662446064-xfo8dug44, #fv-chart-1789662446064-xfo8dug44-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662446064-xfo8dug44 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662446064-xfo8dug44 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662446064-xfo8dug44 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662446064-xfo8dug44.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662446064-xfo8dug44.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662446064-xfo8dug44 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662446064-xfo8dug44-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662446064-xfo8dug44 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662446064-xfo8dug44 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662446064-xfo8dug44 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662446064-xfo8dug44 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662446064-xfo8dug44.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-expand-btn, #fv-chart-1789662446064-xfo8dug44 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-expand-btn:hover, #fv-chart-1789662446064-xfo8dug44 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662446064-xfo8dug44 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662446064-xfo8dug44 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662446064-xfo8dug44 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662446064-xfo8dug44 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-row, #fv-chart-1789662446064-xfo8dug44 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662446064-xfo8dug44.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662446064-xfo8dug44.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662446064-xfo8dug44.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662446064-xfo8dug44 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662446064-xfo8dug44 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662446064-xfo8dug44 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662446064-xfo8dug44 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662446064-xfo8dug44 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662446064-xfo8dug44 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-pie-container,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stacked-product,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-grouped-bar-product,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stacked-product,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-label,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-grouped-product-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-label,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-container,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-cluster,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-container,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-x-axis-label-space,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-benchmark-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-dropdown-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-chart-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-chart-subhead,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-header,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-vs,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-container,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662446064-xfo8dug44.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662446064-xfo8dug44 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-row,#fv-chart-1789662446064-xfo8dug44 .fv-stacked-product,#fv-chart-1789662446064-xfo8dug44 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-label,#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-container,#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662446064-xfo8dug44 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-logo,#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662446064-xfo8dug44.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test 1","description": "Vacuuming crumbs from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:26.064Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662446064-xfo8dug44" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662446064-xfo8dug44-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming crumbs from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662446064-xfo8dug44', false); });} else {initialize('fv-chart-1789662446064-xfo8dug44', false);}})();</script></div><p>The Omni E35’s quietest mode — which I recorded at just 60 decibels – was very fast, but left noticeable tracks of the crumb mix behind. The same happened when ramping up to Turbo mode (64 decibels) and switching to a more thorough clean. But, thankfully, the carpet was left absolutely flawless by using the ultra-powerful Max mode (67 decibels), along with the Deep intensity option and with two passes of the target area. This took longer, but the results absolutely justified the extra time and energy.</p><p>(While talking about noise levels, I recorded the dust bin emptying process at 85 dB from about two feet away.)</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662456772-bndieyrs9 *, #fv-chart-1789662456772-bndieyrs9 *:before, #fv-chart-1789662456772-bndieyrs9 *:after, #fv-chart-1789662456772-bndieyrs9-slideshow *, #fv-chart-1789662456772-bndieyrs9-slideshow *:before, #fv-chart-1789662456772-bndieyrs9-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662456772-bndieyrs9, #fv-chart-1789662456772-bndieyrs9-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662456772-bndieyrs9 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662456772-bndieyrs9 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662456772-bndieyrs9 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662456772-bndieyrs9.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662456772-bndieyrs9.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662456772-bndieyrs9 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662456772-bndieyrs9-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662456772-bndieyrs9 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662456772-bndieyrs9 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662456772-bndieyrs9 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662456772-bndieyrs9 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662456772-bndieyrs9.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-expand-btn, #fv-chart-1789662456772-bndieyrs9 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-expand-btn:hover, #fv-chart-1789662456772-bndieyrs9 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662456772-bndieyrs9 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662456772-bndieyrs9 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662456772-bndieyrs9 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662456772-bndieyrs9 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-row, #fv-chart-1789662456772-bndieyrs9 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662456772-bndieyrs9.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662456772-bndieyrs9.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662456772-bndieyrs9.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662456772-bndieyrs9 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662456772-bndieyrs9 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662456772-bndieyrs9 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662456772-bndieyrs9 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662456772-bndieyrs9 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662456772-bndieyrs9 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-pie-container,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stacked-product,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-grouped-bar-product,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stacked-product,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-label,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-grouped-product-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-label,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-container,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-cluster,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-container,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-x-axis-label-space,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-benchmark-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-dropdown-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-chart-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-chart-subhead,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-header,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-vs,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-container,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662456772-bndieyrs9.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662456772-bndieyrs9 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-row,#fv-chart-1789662456772-bndieyrs9 .fv-stacked-product,#fv-chart-1789662456772-bndieyrs9 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-label,#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-container,#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662456772-bndieyrs9 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-logo,#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662456772-bndieyrs9.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test 2","description": "Vacuuming oats from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:36.773Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662456772-bndieyrs9" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662456772-bndieyrs9-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming oats from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" alt="Oats cleaned from hard floor" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" alt="Oats on hard floor" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662456772-bndieyrs9', false); });} else {initialize('fv-chart-1789662456772-bndieyrs9', false);}})();</script></div><p>The oat test is usually more difficult, because robovacs tend to flick them across hard floors with their rotating side brushes. But the E35 performed surprisingly well, with Turbo mode paired with the Deep intensity and two passes being enough to completely clear the debris. The Max power option wasn’t required. Oats scattered on carpet were tackled even more successfully, as a single pass with the least power, least thorough setting did the job perfectly.</p><p>Moving to the mop, and the Omni E35 continues to impress. It’s a similar system to that of Eufy’s flagship Omni S2, with a roller that cleans itself during use, then is washed and dried when back at the docking station. Eufy claims its HydroJet 2.0 system removes 99.99 percent of bacteria “for a TÜV-certified baby-friendly clean” – in other words, it has been assessed and certified by a group of independent German testing organizations.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662465216-rhj1ydqa6 *, #fv-chart-1789662465216-rhj1ydqa6 *:before, #fv-chart-1789662465216-rhj1ydqa6 *:after, #fv-chart-1789662465216-rhj1ydqa6-slideshow *, #fv-chart-1789662465216-rhj1ydqa6-slideshow *:before, #fv-chart-1789662465216-rhj1ydqa6-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662465216-rhj1ydqa6, #fv-chart-1789662465216-rhj1ydqa6-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662465216-rhj1ydqa6 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662465216-rhj1ydqa6 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662465216-rhj1ydqa6.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662465216-rhj1ydqa6 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662465216-rhj1ydqa6 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662465216-rhj1ydqa6 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662465216-rhj1ydqa6.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-expand-btn, #fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-expand-btn:hover, #fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row, #fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662465216-rhj1ydqa6.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662465216-rhj1ydqa6.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662465216-rhj1ydqa6.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662465216-rhj1ydqa6 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-pie-container,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stacked-product,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-grouped-bar-product,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stacked-product,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-label,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-grouped-product-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-label,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-container,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-cluster,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-container,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-x-axis-label-space,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-benchmark-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-dropdown-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-chart-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-chart-subhead,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-header,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-vs,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-container,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662465216-rhj1ydqa6.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662465216-rhj1ydqa6 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row,#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-product,#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label,#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-container,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-logo,#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662465216-rhj1ydqa6.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor mopping test","description": "Mopping ketchup from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:45.216Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662465216-rhj1ydqa6" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662465216-rhj1ydqa6-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Mopping ketchup from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/q48Q728d3eNziFYCfN9yKA.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/q48Q728d3eNziFYCfN9yKA.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/wvyDCjj5SzH7ckzDqhcmNA.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/wvyDCjj5SzH7ckzDqhcmNA.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662465216-rhj1ydqa6', false); });} else {initialize('fv-chart-1789662465216-rhj1ydqa6', false);}})();</script></div><p>The 290 mm (11.4 inch) mop pushes down with 1.6 kg (3.53 lb) of pressure, so it isn’t merely wiping across the floor, but giving it a good scrub too, and is cleaned by a pair of scrapers eight times per second to stop dirt getting trapped in its fibers. The roller can slide outwards by 32 mm (1.26 inches), ensuring it cleans right up to the wall, while dirty water is moved away from the mop and into an onboard tank, ready to be deposited into the charge station.</p><p>Even without quantitative testing, I know the E35’s mop works extremely well, because the dirty water held in the charge station tank is properly filthy. As I found with the Eufy Omni S2, it’s worth emptying this tank quite frequently, because if you wait until it’s full you’ll be dealing with some seriously stinky water when you pour it down the sink.</p><p>During TechRadar’s standard mopping test – which involves a small amount of dried-on ketchup – the Omni E35 at first struggled to clean the stain from a wooden floor. But upping the water supply to 100 percent soon fixed this, and the ketchup was entirely lifted on the second pass.</p><p>Interestingly, the E35 does not have the ClearMind AI function of the pricier S2, which recognizes floor types, stains and different kinds of mess, then cleans appropriately. Instead, the E35 lets you decide what’s best – and, in my experience, that’s almost always a whole-room clean with the middle or most powerful suction, about 75 percent of the maximum water flow for mopping, the most intense cleaning pattern, and everything done twice.</p><p>The S2’s AI system is clever, and sees the robot work harder to clean messier areas, but the end result — at least on my carpets and wooden floors — was perfectly comparable between the two robots. It also lacks the S2’s water ozonization feature, but that’s by no means a dealbreaker.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2224px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wX8g2ZpZspEniDirYhEchZ" name="Eufy Omni E35-20" alt="Eufy Omni E35 robot vacuum navigating around obstacles on a floor" src="https://cdn.mos.cms.futurecdn.net/wX8g2ZpZspEniDirYhEchZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2224" height="1251" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Finally, I tested the E35’s obstacle avoidance tech by having it clean an area littered with a shoe, a sock and a USB cable. The robot performed perfectly, driving neatly around each object but not touching any of them. I was particularly impressed by its ability to dodge the USB cable, since this is something even high-end robovacs can struggle with. Eufy says the robot can recognize over 280 common household objects, and can navigate fine in darkness as well as daylight. </p><p>It isn’t perfect though. The E35 sometimes navigated too confidently, driving up and over obstacles that should be avoided. I have a vinyl record stand on the floor, the front of which stands about an inch off the ground; the E35 frequently drove up onto this, pushing some records around in the process.</p><ul><li><strong>Performance score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-e35-app"><span>Eufy Omni E35: app</span></h3><ul><li><strong>Straightforward mapping </strong></li><li><strong>Good use of shortcuts</strong></li><li><strong>Lacks a mop-only mode</strong></li></ul><p>The Omni E35 uses the same app as all other Eufy robotic vacuums, and it’s an app shared by the company’s home security products too. The app has matured nicely over the past few years into something that works very well, giving you access to just the right amount of customization without it feeling overwhelming.</p><p>The creation and editing of maps works well (albeit with the phantom room I mentioned earlier), and it’s easy to select the right parameters for each clean. Or, you can set up a clean (kitchen with intense mopping and two passes, for example) and save that as a commonly used chore. This can then be added to the home screen of the app, where it’s ready to activate with one tap.</p><p>It’s also possible to create a home screen widget, where a single tap fires up the E35 and sets it to work.</p><p>Other useful app settings include the child lock, which stops small people (and pets!) from pressing the robot’s two buttons, and off-peak charging, which you can program to coincide with cheaper overnight electricity rates. Since I have an electric car tariff, I set the Eufy to charge overnight when power is significantly cheaper.</p><p>All that’s missing is a mop-only mode. This is a little frustrating for Eufy to omit, since I’d prefer to have my robot tackle a dried-on hard floor stain with its mop first, rather than vacuum the floor. Ideally, the robot should approach such a stain in reverse, mop-first, rather than risk it transferring onto the brushes before applying water and detergent.</p><ul><li><strong>App score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-eufy-omni-e35"><span>Should you buy the Eufy Omni E35?</span></h3><div ><table><caption>Eufy Omni E35 score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The Omni E35 feels like much better value than some of Eufy’s more expensive robotic vacuum cleaners, especially from its flagship S family. The E35 offers superb vacuuming and strong mopping performance, with smart navigation and a compact design at a more accessible price than models with superfluous bells and whistles.</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Compact and relatively attractive, as far as robovacs go, the E35 benefits from a clever anti-tangle brush design, along with a high-performance mop that washes and dries itself. It cleans right into the corners of every room, but can’t raise itself up to clear raised rugs as well as the more expensive Omni S2.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Its superb vacuuming performance is reason enough to buy this robovac. It really does leave your carpets spotless, while also mopping hard floors well, navigating reliably, and thoroughly cleaning itself after every use. It also works quickly, quietly, and reliably, not once getting stuck or lost during my testing.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>Eufy’s app continues to impress, with a clean interface that is easy to navigate. It offers just the right amount of functionality and customization without being overwhelming. Shortcuts and iOS widget functionality are welcome additions, along with a child lock and off-peak charging.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-6">Buy it if</h2><div class="product"><p><strong>You want a hands-off robovac</strong></p><p>Eufy says this robot can operate hands-free for up to 60 days – and even after that, you’ll likely only need to replenish the water and perhaps replace the dust bag. The self-cleaning really is that good.</p></div><p>I set up the Eufy Omni E35 in my own home and lived with it for a couple of weeks. During this time it was my only vacuum cleaner and mop, tackling every room of my home and cleaning up after an energetic puppy too.</p><p>After that fortnight, I conducted TechRadar’s standard robovac tests to analyze its suction, mopping and navigation skills, as well as monitoring how loud it is and checking the performance of its self-cleaning system.</p><div class="product"><p><strong>You don’t need the flagship</strong></p><p>Eufy’s Omni S2 is phenomenally good, but it’s also much more expensive than this model. Do you really need a fragrance diffuser and ozonated water? If not, save the money and buy this one instead.</p></div><div class="product"><p><strong>You value mopping as much as vacuuming</strong></p><p>If your floors are evenly split between hard floors and carpet, this robot could be perfect for you, since it manages both surfaces equally well.</p></div><h2 id="don-39-t-buy-it-if-6">Don't buy it if</h2><div class="product"><p><strong>You’re on a budget</strong></p><p>Despite being much less expensive than Eufy’s top-end S2, the E35 is still a pricey robovac. If you’re on a tighter budget, consider a more affordable model with less powerful suction or a less comprehensive mopping and self-cleaning system.</p></div><div class="product"><p><strong>You have large doorway thresholds or thick rugs</strong></p><p>Although the E35’s ability to clear 1.2-inch thresholds is good, some models can climb higher. So if you have significant differences in floor height between rooms you might want to look elsewhere.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-eufy-omni-e35"><span>How I tested the Eufy Omni E35</span></h3><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789660635467-0b8tnk56l *, #fv-chart-1789660635467-0b8tnk56l *:before, #fv-chart-1789660635467-0b8tnk56l *:after, #fv-chart-1789660635467-0b8tnk56l-slideshow *, #fv-chart-1789660635467-0b8tnk56l-slideshow *:before, #fv-chart-1789660635467-0b8tnk56l-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789660635467-0b8tnk56l, #fv-chart-1789660635467-0b8tnk56l-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789660635467-0b8tnk56l {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789660635467-0b8tnk56l .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789660635467-0b8tnk56l .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789660635467-0b8tnk56l.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660635467-0b8tnk56l .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789660635467-0b8tnk56l .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789660635467-0b8tnk56l .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789660635467-0b8tnk56l .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789660635467-0b8tnk56l .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789660635467-0b8tnk56l.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-expand-btn, #fv-chart-1789660635467-0b8tnk56l .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-expand-btn:hover, #fv-chart-1789660635467-0b8tnk56l .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789660635467-0b8tnk56l .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789660635467-0b8tnk56l .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789660635467-0b8tnk56l .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789660635467-0b8tnk56l .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-row, #fv-chart-1789660635467-0b8tnk56l .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789660635467-0b8tnk56l.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660635467-0b8tnk56l.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789660635467-0b8tnk56l.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789660635467-0b8tnk56l .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789660635467-0b8tnk56l .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789660635467-0b8tnk56l .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789660635467-0b8tnk56l .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789660635467-0b8tnk56l .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789660635467-0b8tnk56l .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-pie-container,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stacked-product,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-grouped-bar-product,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stacked-product,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-label,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-grouped-product-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-label,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-container,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-cluster,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-container,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-x-axis-wrapper,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-x-axis-label-space,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-x-axis-chart-space,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-benchmark-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-dropdown-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-carousel-nav-btn,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-chart-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-chart-subhead,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-header,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-wrapper,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-vs,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-container,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660635467-0b8tnk56l.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789660635467-0b8tnk56l .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-row,#fv-chart-1789660635467-0b8tnk56l .fv-stacked-product,#fv-chart-1789660635467-0b8tnk56l .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-label,#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-container,#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660635467-0b8tnk56l .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-logo,#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660635467-0b8tnk56l.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test","description": "Vacuuming oats from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T15:57:15.468Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789660635467-0b8tnk56l" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Hard floor cleaning test</h3><p class="fv-chart-subhead">Vacuuming oats from hard floor using Eufy Omni E35</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789660635467-0b8tnk56l-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming oats from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" alt="Oats cleaned from hard floor" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" alt="Oats on hard floor" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789660635467-0b8tnk56l', false); });} else {initialize('fv-chart-1789660635467-0b8tnk56l', false);}})();</script></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789660646444-sr9dsdz95 *, #fv-chart-1789660646444-sr9dsdz95 *:before, #fv-chart-1789660646444-sr9dsdz95 *:after, #fv-chart-1789660646444-sr9dsdz95-slideshow *, #fv-chart-1789660646444-sr9dsdz95-slideshow *:before, #fv-chart-1789660646444-sr9dsdz95-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789660646444-sr9dsdz95, #fv-chart-1789660646444-sr9dsdz95-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789660646444-sr9dsdz95 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789660646444-sr9dsdz95 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789660646444-sr9dsdz95.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789660646444-sr9dsdz95 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789660646444-sr9dsdz95 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789660646444-sr9dsdz95 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789660646444-sr9dsdz95.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-expand-btn, #fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-expand-btn:hover, #fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row, #fv-chart-1789660646444-sr9dsdz95 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789660646444-sr9dsdz95.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660646444-sr9dsdz95.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789660646444-sr9dsdz95.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789660646444-sr9dsdz95 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-pie-container,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stacked-product,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-grouped-bar-product,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stacked-product,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-label,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-grouped-product-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-label,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-container,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-cluster,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-container,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-x-axis-wrapper,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-x-axis-label-space,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-x-axis-chart-space,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-benchmark-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-dropdown-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-carousel-nav-btn,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-chart-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-chart-subhead,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-header,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-wrapper,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-vs,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-container,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660646444-sr9dsdz95.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789660646444-sr9dsdz95 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row,#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-product,#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label,#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-container,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-logo,#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660646444-sr9dsdz95.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test","description": "Vacuuming crumbs from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T15:57:26.444Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789660646444-sr9dsdz95" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Hard floor cleaning test</h3><p class="fv-chart-subhead">Vacuuming crumbs from hard floor using Eufy Omni E35</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789660646444-sr9dsdz95-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming crumbs from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789660646444-sr9dsdz95', false); });} else {initialize('fv-chart-1789660646444-sr9dsdz95', false);}})();</script></div> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/robot-vacuums/eufy-omni-e35-review</link>
                                                                            <description>
                            <![CDATA[ An excellent robot vacuum cleaner and mop that gets all the fundamentals right, offering weeks of truly hands-off cleaning. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">pouA5fgnUVQ5S9Lgms3BYH</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FtgYPUYH2FARg7BAfsPMTi-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 23 Sep 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Robot Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alistair Charlton ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oZ46mMfZNzivnpXwiVMoLf-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FtgYPUYH2FARg7BAfsPMTi-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Eufy Omni E35 vacuum cleaner emerging from dock]]></media:description>                                                            <media:text><![CDATA[Eufy Omni E35 vacuum cleaner emerging from dock]]></media:text>
                                <media:title type="plain"><![CDATA[Eufy Omni E35 vacuum cleaner emerging from dock]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FtgYPUYH2FARg7BAfsPMTi-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-eufy-omni-e35-two-minute-review"><span>Eufy Omni E35: two-minute review</span></h3><p>The Eufy Omni E35 is a near-perfect <a href="https://www.techradar.com/home/robot-vacuums/best-robot-vacuum">robot vacuum cleaner</a> and mop. It fits into the Eufy range below its flagship S series, but above the cheaper C and older X series. The headline figure of 35,000 Pa suction is seriously impressive, and so too is the E35’s ability to keep itself clean by cleverly preventing fine dust from blocking the filter.</p><p>The charge dock empties the dust bin, replenishes the mopping water tank, then washes and dries the mop with hot water and warm air, for truly hands-off cleaning. Navigation is also strong, the Eufy app works very well, and the E35’s overall cleaning performance fully justifies the four-figure price tag.</p><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="TEAURV664q92cNjJK9BeSD" name="Eufy Omni E35-18" alt="Eufy Omni E35 robot vacuum" src="https://cdn.mos.cms.futurecdn.net/TEAURV664q92cNjJK9BeSD-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The E35 lacks the fragrance diffuser, water ozonator and more advanced, AI-powered navigation tech of the pricier Omni S2, but by cutting those Eufy has created a robovac that focuses on what really matters — cleaning your floors and, crucially, keeping itself clean too.</p><p>It’s the self-cleaning that impresses most here, with the mop still looking brand-new after weeks of use, the roller free from tangled hair, and the dust bin filter not caked in dust. Add that to the E35’s strong suction and pivoting mop that stretches into the edges of every room while pushing down to scrub stains and scraping itself clean as it goes, and this is truly a set-it-and-forget-it robovac.</p><h3 class="article-body__section" id="section-eufy-omni-e35-price-and-availability"><span>Eufy Omni E35: price and availability</span></h3><ul><li><strong>List price: $1,299.99 / £999 (about AU$1,830)</strong></li><li><strong>Launched: September 2026</strong></li></ul><p>The Omni E35 is the new flagship of Eufy’s E series of robotic vacuum cleaners. It sits above the E25 and E38, but below the company’s top-end S tier and overall flagship, the Omni S2.</p><p>At £999 (or $1,299.99 in the US; Australian price to be confirmed), the E35 is £100 more than the E28, but sits comfortably below the older £1,299 S1 and £1,599 S2.</p><p>Interestingly, the E35 has slightly more suction power than the range-topping S2, and features much of the same self-cleaning and anti-tangle tech. But it misses out on the S2’s fragrance system, water electrolysis function, and more advanced vision system — all of which helps explain the price difference, and also why the newer model’s base station is more compact.</p><p>Announced at the IFA technology trade show in September 2026, the Eufy Omni E35 is available now.</p><ul><li><strong>Value for money score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-e35-specifications"><span>Eufy Omni E35: specifications</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Feature</p></td><td  ><p>Specification</p></td></tr><tr><td class="firstcol " ><p>Max suction</p></td><td  ><p>35,000 Pa</p></td></tr><tr><td class="firstcol " ><p>Robot diameter</p></td><td  ><p>14.2 in (360 mm)</p></td></tr><tr><td class="firstcol " ><p>Robot height</p></td><td  ><p>4.6 in (116 mm)</p></td></tr><tr><td class="firstcol " ><p>Dock dimensions</p></td><td  ><p>14.6 x 17.6 x 16.2 in / 270 x 447 x 411 mm</p></td></tr><tr><td class="firstcol " ><p>Dust bin volume (base)</p></td><td  ><p>2.5 liters</p></td></tr><tr><td class="firstcol " ><p>Water tank volume (base)</p></td><td  ><p>2.5 liters clean / 2.4 liters dirty</p></td></tr><tr><td class="firstcol " ><p>Base type</p></td><td  ><p>Charging self-emptying, refilling, hot-water mop washing, hot-water drying</p></td></tr><tr><td class="firstcol " ><p>Max threshold clearance</p></td><td  ><p>1.2 in (30 mm)</p></td></tr><tr><td class="firstcol " ><p>Mop type</p></td><td  ><p>Self-cleaning roller</p></td></tr><tr><td class="firstcol " ><p>Mop pad lifting</p></td><td  ><p>Automatic on carpet</p></td></tr><tr><td class="firstcol " ><p>Max runtime</p></td><td  ><p>180 minutes</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-eufy-omni-e35-design"><span>Eufy Omni E35: design</span></h3><ul><li><strong>Charge station with dusty bag, water tanks, mop cleaning and drying function</strong></li><li><strong>Self-cleaning roller mop with edge-cleaning design</strong></li><li><strong>Dual detangling brushes </strong></li></ul><p>The Omni E35 continues Eufy’s trend of making its robotic vacuums more compact, while increasing performance. The robot itself is broadly similar to most other members of the Omni family — more on that in a moment — but the docking station is where a reduction in bulk is most obvious. It makes the X10 Pro, my go-to recommendation from just a couple of years ago, look ancient.</p><p>The E35 dock is shorter and sleeker, with a glossy plastic front, a neat bit of silver trim above the robot’s parking space, and a couple of discreet integrated handles for lifting out the clean and dirty water tanks. At about 16 inches (around 40cm) tall, and about the same depth front to back, including the robot when parked, the whole system is pleasingly compact. So much so, you’d be forgiven for wrongly thinking this is an entry-level robovac with limited performance.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jeKh93A7LWfgVXA2q9HjQD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LoZKLBrQBWsx4QcpZuGgPD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CV7ZhnsPo6FBbTNXW2jyWD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tEN4LEWAP54WEC7Y7NWLGD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/P3qoCWSJHNKK2R7iaXpkFD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Inside that compact dock there’s a charger and dust bag, two tanks for clean and dirty water, and a system that washes the mop with 60C (140F) hot water then dries it with 55C (131F) hot air. There’s also a compartment for installing Eufy’s own floor detergent (one bottle is included in the box), and Eufy says the system can operate entirely hands-free for up to 60 days. This will depend on the size of your home and how frequently you clean, of course, but it’s an impressive claim nonetheless.</p><p>The robot itself measures 4.6 in (116mm) tall and 14.2 in (360mm) in diameter, making it slightly larger in both directions than the Eufy S2, and fractionally taller than the Dyson Spot+Scrub AI. It’s also slightly taller than my trusty Eufy X10 Pro, and while the E35 managed to clean beneath all of my furniture, you’ll want to check it against yours to be sure it’ll fit.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jVYjJ8gqdLMsi4XtwjGJQD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CZakRWNfEEcHiPTHQAF5FD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uX49xWjRrUPFfvBVgVyKFD-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ERHcKTCiewr5do4cxDQkED-1920-80.jpg" alt="Eufy Omni E35 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Eufy claims a maximum threshold clearance of 1.2 inches (30.5mm), which isn’t as impressive as the Omni S2, but I’ve had no issues with it driving up from wooden floors onto carpeting.</p><p>A clever piece of design sees fine dust separated and ushered into the robot’s onboard bin before it reaches the filter. Eufy claims this ensures the E35 retains its headline 35,000 Pa suction power for longer, since the filter doesn’t get clogged up quite so quickly. After testing I found dust had started to settle in the filter, but this was easily cleaned and didn’t appear to affect performance. There’s also an anti-tangle comb to stop hair wrapping around the roller brush.</p><ul><li><strong>Design score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-e35-performance"><span>Eufy Omni E35: performance</span></h3><ul><li><strong>Excellent vacuuming</strong></li><li><strong>Very good mopping</strong></li><li><strong>Fully cleans and dries itself reliably</strong></li></ul><p>Eufy’s E series of robotic vacuums has impressed for a few years now, so my expectations were high when the E35 arrived. Thankfully, the E35 delivered. The setup process will be familiar to anyone who has used a Eufy Omni, or really any robotic vacuum cleaner, before.</p><p>Assembly takes just a couple of minutes, then it’s just a case of filling the clean water tank, installing the included detergent bottle, switching it on and following the instructions of the Eufy app. The E35 then completed a mapping expedition, driving into every room and quickly using its vision system to map the walls, floors and doorways.</p><p>Furniture isn’t automatically added to the map, as it is with the pricier Omni S2, but I’ve never cared much for that feature and would rather see the floor plan unobscured.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662423095-ng0fonoi0 *, #fv-chart-1789662423095-ng0fonoi0 *:before, #fv-chart-1789662423095-ng0fonoi0 *:after, #fv-chart-1789662423095-ng0fonoi0-slideshow *, #fv-chart-1789662423095-ng0fonoi0-slideshow *:before, #fv-chart-1789662423095-ng0fonoi0-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662423095-ng0fonoi0, #fv-chart-1789662423095-ng0fonoi0-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662423095-ng0fonoi0 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662423095-ng0fonoi0 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662423095-ng0fonoi0.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662423095-ng0fonoi0-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662423095-ng0fonoi0 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662423095-ng0fonoi0 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662423095-ng0fonoi0 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662423095-ng0fonoi0 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662423095-ng0fonoi0.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-expand-btn, #fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-expand-btn:hover, #fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row, #fv-chart-1789662423095-ng0fonoi0 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662423095-ng0fonoi0.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662423095-ng0fonoi0.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662423095-ng0fonoi0.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662423095-ng0fonoi0 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662423095-ng0fonoi0 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-pie-container,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stacked-product,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-grouped-bar-product,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stacked-product,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-label,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-grouped-product-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-label,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-container,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-cluster,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-container,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-x-axis-label-space,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-benchmark-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-dropdown-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-chart-title,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-chart-subhead,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-header,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-vs,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select-container,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-versus-select,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662423095-ng0fonoi0.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662423095-ng0fonoi0 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row,#fv-chart-1789662423095-ng0fonoi0 .fv-stacked-product,#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-label,#fv-chart-1789662423095-ng0fonoi0 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-container,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662423095-ng0fonoi0 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-logo,#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662423095-ng0fonoi0 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662423095-ng0fonoi0.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Carpet cleaning test 1","description": "Vacuuming crumbs from carpeted floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:03.095Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662423095-ng0fonoi0" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662423095-ng0fonoi0-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming crumbs from carpeted floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/ab2fBmoNVTzG9pZCQ8aMjG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ab2fBmoNVTzG9pZCQ8aMjG.jpg" alt="Carpet after vacuuming" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/QeS87en4RyWorRdqpmTmnG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/QeS87en4RyWorRdqpmTmnG.jpg" alt="Carpet with crumbs" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662423095-ng0fonoi0', false); });} else {initialize('fv-chart-1789662423095-ng0fonoi0', false);}})();</script></div><p>As with all robotic vacuums, I had to manually adjust the E35’s map slightly, repositioning some walls and naming each of the rooms. It’s not really a failing of the vision system, just a part of the setup process. That said, the robot mistakenly added an enormous room to the sides of my kitchen and living room that doesn’t really exist. I imagine it saw through to the garden and decided that was part of the floor plan, but frustratingly phantom rooms can’t be deleted, so I binned the entire map and started again. The second map was created accurately, and remained so throughout the rest of my month-long test.</p><p>The headline figure for this robot is its 35,000 Pa of maximum suction power. This is actually 5,000 Pa more than the flagship Omni S2, and provides fantastic results on carpet and hard floors alike. Going back to my X10 Pro again – a vacuum that I awarded four stars just two years ago, and launched at £800 / $800 – and that manages just 8,000 Pa, a quarter of the new E35.</p><p>The result of all that power is deeply impressive cleaning performance. The vacuuming is especially good, with carpets visibly cleaner after using Max mode. It’s probably overkill for a little-and-often cleaning schedule, but if the battery can survive a full carpet vacuum in Max mode, why wouldn’t you use it?</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662435817-p844seqfk *, #fv-chart-1789662435817-p844seqfk *:before, #fv-chart-1789662435817-p844seqfk *:after, #fv-chart-1789662435817-p844seqfk-slideshow *, #fv-chart-1789662435817-p844seqfk-slideshow *:before, #fv-chart-1789662435817-p844seqfk-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662435817-p844seqfk, #fv-chart-1789662435817-p844seqfk-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662435817-p844seqfk {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662435817-p844seqfk .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662435817-p844seqfk .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662435817-p844seqfk.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662435817-p844seqfk.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662435817-p844seqfk .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662435817-p844seqfk-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662435817-p844seqfk-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662435817-p844seqfk .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662435817-p844seqfk .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662435817-p844seqfk .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662435817-p844seqfk .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662435817-p844seqfk .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662435817-p844seqfk .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662435817-p844seqfk .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662435817-p844seqfk .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662435817-p844seqfk .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662435817-p844seqfk .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662435817-p844seqfk .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662435817-p844seqfk .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662435817-p844seqfk .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662435817-p844seqfk.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-expand-btn, #fv-chart-1789662435817-p844seqfk .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-expand-btn:hover, #fv-chart-1789662435817-p844seqfk .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662435817-p844seqfk .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662435817-p844seqfk .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662435817-p844seqfk .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662435817-p844seqfk .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662435817-p844seqfk .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662435817-p844seqfk .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662435817-p844seqfk .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662435817-p844seqfk .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662435817-p844seqfk .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662435817-p844seqfk .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662435817-p844seqfk .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662435817-p844seqfk .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-row, #fv-chart-1789662435817-p844seqfk .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662435817-p844seqfk.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662435817-p844seqfk.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662435817-p844seqfk.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662435817-p844seqfk .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662435817-p844seqfk .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662435817-p844seqfk .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662435817-p844seqfk .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662435817-p844seqfk .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662435817-p844seqfk .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662435817-p844seqfk .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662435817-p844seqfk .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662435817-p844seqfk .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662435817-p844seqfk .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662435817-p844seqfk .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662435817-p844seqfk .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-pie-container,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stacked-product,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-grouped-bar-product,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stacked-product,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-label,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-grouped-product-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-label,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-container,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-cluster,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-container,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-x-axis-label-space,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-benchmark-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-dropdown-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-chart-title,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-chart-subhead,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-header,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-vs,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select-container,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-versus-select,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662435817-p844seqfk.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662435817-p844seqfk .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-row,#fv-chart-1789662435817-p844seqfk .fv-stacked-product,#fv-chart-1789662435817-p844seqfk .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-label,#fv-chart-1789662435817-p844seqfk .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-container,#fv-chart-1789662435817-p844seqfk .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662435817-p844seqfk .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662435817-p844seqfk .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662435817-p844seqfk .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662435817-p844seqfk .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-logo,#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662435817-p844seqfk .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662435817-p844seqfk .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662435817-p844seqfk .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662435817-p844seqfk.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Carpet cleaning test 2","description": "Vacuuming oats from carpeted floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:15.817Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662435817-p844seqfk" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662435817-p844seqfk-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming oats from carpeted floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/ToeZntqV3hV2Q7HvUjwiLG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ToeZntqV3hV2Q7HvUjwiLG.jpg" alt="Oats vacuumed from carpet" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/3P3U9DpNjAojxsipX2PYQG.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/3P3U9DpNjAojxsipX2PYQG.jpg" alt="Oats on carpet" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662435817-p844seqfk', false); });} else {initialize('fv-chart-1789662435817-p844seqfk', false);}})();</script></div><p>I often left it in Max for the kitchen and living room, or switched down to the middling Turbo mode for bigger cleans in a bid to avoid charging mid-task. It’s also worth noting how the robot automatically increases suction when carpet or rugs are detected.</p><p>After a fortnight of regular use — and being impressed by the E35’s performance – I began TechRadar’s specific robovac tests. Vacuuming is first tested with a crumb mix made of flour and crushed biscuit spread across both carpet and hard floors, then oats are scattered across the same areas to test its ability to pick up larger debris.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662446064-xfo8dug44 *, #fv-chart-1789662446064-xfo8dug44 *:before, #fv-chart-1789662446064-xfo8dug44 *:after, #fv-chart-1789662446064-xfo8dug44-slideshow *, #fv-chart-1789662446064-xfo8dug44-slideshow *:before, #fv-chart-1789662446064-xfo8dug44-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662446064-xfo8dug44, #fv-chart-1789662446064-xfo8dug44-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662446064-xfo8dug44 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662446064-xfo8dug44 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662446064-xfo8dug44 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662446064-xfo8dug44.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662446064-xfo8dug44.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662446064-xfo8dug44 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662446064-xfo8dug44-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662446064-xfo8dug44-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662446064-xfo8dug44 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662446064-xfo8dug44 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662446064-xfo8dug44 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662446064-xfo8dug44 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662446064-xfo8dug44 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662446064-xfo8dug44.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-expand-btn, #fv-chart-1789662446064-xfo8dug44 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-expand-btn:hover, #fv-chart-1789662446064-xfo8dug44 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662446064-xfo8dug44 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662446064-xfo8dug44 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662446064-xfo8dug44 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662446064-xfo8dug44 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662446064-xfo8dug44 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-row, #fv-chart-1789662446064-xfo8dug44 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662446064-xfo8dug44.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662446064-xfo8dug44.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662446064-xfo8dug44.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662446064-xfo8dug44 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662446064-xfo8dug44 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662446064-xfo8dug44 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662446064-xfo8dug44 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662446064-xfo8dug44 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662446064-xfo8dug44 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662446064-xfo8dug44 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-pie-container,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stacked-product,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-grouped-bar-product,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stacked-product,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-label,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-grouped-product-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-label,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-container,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-cluster,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-container,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-x-axis-label-space,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-benchmark-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-dropdown-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-chart-title,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-chart-subhead,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-header,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-vs,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select-container,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-versus-select,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662446064-xfo8dug44.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662446064-xfo8dug44 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-row,#fv-chart-1789662446064-xfo8dug44 .fv-stacked-product,#fv-chart-1789662446064-xfo8dug44 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-label,#fv-chart-1789662446064-xfo8dug44 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-container,#fv-chart-1789662446064-xfo8dug44 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662446064-xfo8dug44 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662446064-xfo8dug44 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662446064-xfo8dug44 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-logo,#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662446064-xfo8dug44 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662446064-xfo8dug44 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662446064-xfo8dug44 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662446064-xfo8dug44.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test 1","description": "Vacuuming crumbs from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:26.064Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662446064-xfo8dug44" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662446064-xfo8dug44-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming crumbs from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662446064-xfo8dug44', false); });} else {initialize('fv-chart-1789662446064-xfo8dug44', false);}})();</script></div><p>The Omni E35’s quietest mode — which I recorded at just 60 decibels – was very fast, but left noticeable tracks of the crumb mix behind. The same happened when ramping up to Turbo mode (64 decibels) and switching to a more thorough clean. But, thankfully, the carpet was left absolutely flawless by using the ultra-powerful Max mode (67 decibels), along with the Deep intensity option and with two passes of the target area. This took longer, but the results absolutely justified the extra time and energy.</p><p>(While talking about noise levels, I recorded the dust bin emptying process at 85 dB from about two feet away.)</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662456772-bndieyrs9 *, #fv-chart-1789662456772-bndieyrs9 *:before, #fv-chart-1789662456772-bndieyrs9 *:after, #fv-chart-1789662456772-bndieyrs9-slideshow *, #fv-chart-1789662456772-bndieyrs9-slideshow *:before, #fv-chart-1789662456772-bndieyrs9-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662456772-bndieyrs9, #fv-chart-1789662456772-bndieyrs9-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662456772-bndieyrs9 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662456772-bndieyrs9 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662456772-bndieyrs9 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662456772-bndieyrs9.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662456772-bndieyrs9.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662456772-bndieyrs9 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662456772-bndieyrs9-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662456772-bndieyrs9-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662456772-bndieyrs9 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662456772-bndieyrs9 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662456772-bndieyrs9 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662456772-bndieyrs9 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662456772-bndieyrs9 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662456772-bndieyrs9.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-expand-btn, #fv-chart-1789662456772-bndieyrs9 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-expand-btn:hover, #fv-chart-1789662456772-bndieyrs9 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662456772-bndieyrs9 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662456772-bndieyrs9 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662456772-bndieyrs9 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662456772-bndieyrs9 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662456772-bndieyrs9 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-row, #fv-chart-1789662456772-bndieyrs9 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662456772-bndieyrs9.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662456772-bndieyrs9.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662456772-bndieyrs9.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662456772-bndieyrs9 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662456772-bndieyrs9 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662456772-bndieyrs9 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662456772-bndieyrs9 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662456772-bndieyrs9 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662456772-bndieyrs9 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662456772-bndieyrs9 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-pie-container,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stacked-product,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-grouped-bar-product,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stacked-product,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-label,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-grouped-product-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-label,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-container,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-cluster,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-container,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-x-axis-label-space,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-benchmark-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-dropdown-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-chart-title,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-chart-subhead,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-header,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-vs,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select-container,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-versus-select,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662456772-bndieyrs9.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662456772-bndieyrs9 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-row,#fv-chart-1789662456772-bndieyrs9 .fv-stacked-product,#fv-chart-1789662456772-bndieyrs9 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-label,#fv-chart-1789662456772-bndieyrs9 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-container,#fv-chart-1789662456772-bndieyrs9 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662456772-bndieyrs9 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662456772-bndieyrs9 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662456772-bndieyrs9 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-logo,#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662456772-bndieyrs9 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662456772-bndieyrs9 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662456772-bndieyrs9 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662456772-bndieyrs9.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test 2","description": "Vacuuming oats from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:36.773Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662456772-bndieyrs9" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662456772-bndieyrs9-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming oats from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" alt="Oats cleaned from hard floor" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" alt="Oats on hard floor" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662456772-bndieyrs9', false); });} else {initialize('fv-chart-1789662456772-bndieyrs9', false);}})();</script></div><p>The oat test is usually more difficult, because robovacs tend to flick them across hard floors with their rotating side brushes. But the E35 performed surprisingly well, with Turbo mode paired with the Deep intensity and two passes being enough to completely clear the debris. The Max power option wasn’t required. Oats scattered on carpet were tackled even more successfully, as a single pass with the least power, least thorough setting did the job perfectly.</p><p>Moving to the mop, and the Omni E35 continues to impress. It’s a similar system to that of Eufy’s flagship Omni S2, with a roller that cleans itself during use, then is washed and dried when back at the docking station. Eufy claims its HydroJet 2.0 system removes 99.99 percent of bacteria “for a TÜV-certified baby-friendly clean” – in other words, it has been assessed and certified by a group of independent German testing organizations.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789662465216-rhj1ydqa6 *, #fv-chart-1789662465216-rhj1ydqa6 *:before, #fv-chart-1789662465216-rhj1ydqa6 *:after, #fv-chart-1789662465216-rhj1ydqa6-slideshow *, #fv-chart-1789662465216-rhj1ydqa6-slideshow *:before, #fv-chart-1789662465216-rhj1ydqa6-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789662465216-rhj1ydqa6, #fv-chart-1789662465216-rhj1ydqa6-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789662465216-rhj1ydqa6 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789662465216-rhj1ydqa6 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789662465216-rhj1ydqa6.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789662465216-rhj1ydqa6-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789662465216-rhj1ydqa6 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789662465216-rhj1ydqa6 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789662465216-rhj1ydqa6 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789662465216-rhj1ydqa6.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-expand-btn, #fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-expand-btn:hover, #fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row, #fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789662465216-rhj1ydqa6.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662465216-rhj1ydqa6.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789662465216-rhj1ydqa6.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789662465216-rhj1ydqa6 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789662465216-rhj1ydqa6 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-pie-container,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stacked-product,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-grouped-bar-product,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stacked-product,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-label,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-grouped-product-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-label,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-container,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-cluster,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-container,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-x-axis-wrapper,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-x-axis-label-space,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-x-axis-chart-space,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-benchmark-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-dropdown-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-carousel-nav-btn,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-chart-title,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-chart-subhead,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-header,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-wrapper,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-vs,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select-container,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-versus-select,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662465216-rhj1ydqa6.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789662465216-rhj1ydqa6 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row,#fv-chart-1789662465216-rhj1ydqa6 .fv-stacked-product,#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-label,#fv-chart-1789662465216-rhj1ydqa6 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-container,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-logo,#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789662465216-rhj1ydqa6 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789662465216-rhj1ydqa6.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor mopping test","description": "Mopping ketchup from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T16:27:45.216Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789662465216-rhj1ydqa6" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789662465216-rhj1ydqa6-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Mopping ketchup from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/q48Q728d3eNziFYCfN9yKA.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/q48Q728d3eNziFYCfN9yKA.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/wvyDCjj5SzH7ckzDqhcmNA.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/wvyDCjj5SzH7ckzDqhcmNA.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789662465216-rhj1ydqa6', false); });} else {initialize('fv-chart-1789662465216-rhj1ydqa6', false);}})();</script></div><p>The 290 mm (11.4 inch) mop pushes down with 1.6 kg (3.53 lb) of pressure, so it isn’t merely wiping across the floor, but giving it a good scrub too, and is cleaned by a pair of scrapers eight times per second to stop dirt getting trapped in its fibers. The roller can slide outwards by 32 mm (1.26 inches), ensuring it cleans right up to the wall, while dirty water is moved away from the mop and into an onboard tank, ready to be deposited into the charge station.</p><p>Even without quantitative testing, I know the E35’s mop works extremely well, because the dirty water held in the charge station tank is properly filthy. As I found with the Eufy Omni S2, it’s worth emptying this tank quite frequently, because if you wait until it’s full you’ll be dealing with some seriously stinky water when you pour it down the sink.</p><p>During TechRadar’s standard mopping test – which involves a small amount of dried-on ketchup – the Omni E35 at first struggled to clean the stain from a wooden floor. But upping the water supply to 100 percent soon fixed this, and the ketchup was entirely lifted on the second pass.</p><p>Interestingly, the E35 does not have the ClearMind AI function of the pricier S2, which recognizes floor types, stains and different kinds of mess, then cleans appropriately. Instead, the E35 lets you decide what’s best – and, in my experience, that’s almost always a whole-room clean with the middle or most powerful suction, about 75 percent of the maximum water flow for mopping, the most intense cleaning pattern, and everything done twice.</p><p>The S2’s AI system is clever, and sees the robot work harder to clean messier areas, but the end result — at least on my carpets and wooden floors — was perfectly comparable between the two robots. It also lacks the S2’s water ozonization feature, but that’s by no means a dealbreaker.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2224px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wX8g2ZpZspEniDirYhEchZ" name="Eufy Omni E35-20" alt="Eufy Omni E35 robot vacuum navigating around obstacles on a floor" src="https://cdn.mos.cms.futurecdn.net/wX8g2ZpZspEniDirYhEchZ-1920-80.jpg" mos="" align="middle" fullscreen="" width="2224" height="1251" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Finally, I tested the E35’s obstacle avoidance tech by having it clean an area littered with a shoe, a sock and a USB cable. The robot performed perfectly, driving neatly around each object but not touching any of them. I was particularly impressed by its ability to dodge the USB cable, since this is something even high-end robovacs can struggle with. Eufy says the robot can recognize over 280 common household objects, and can navigate fine in darkness as well as daylight. </p><p>It isn’t perfect though. The E35 sometimes navigated too confidently, driving up and over obstacles that should be avoided. I have a vinyl record stand on the floor, the front of which stands about an inch off the ground; the E35 frequently drove up onto this, pushing some records around in the process.</p><ul><li><strong>Performance score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-e35-app"><span>Eufy Omni E35: app</span></h3><ul><li><strong>Straightforward mapping </strong></li><li><strong>Good use of shortcuts</strong></li><li><strong>Lacks a mop-only mode</strong></li></ul><p>The Omni E35 uses the same app as all other Eufy robotic vacuums, and it’s an app shared by the company’s home security products too. The app has matured nicely over the past few years into something that works very well, giving you access to just the right amount of customization without it feeling overwhelming.</p><p>The creation and editing of maps works well (albeit with the phantom room I mentioned earlier), and it’s easy to select the right parameters for each clean. Or, you can set up a clean (kitchen with intense mopping and two passes, for example) and save that as a commonly used chore. This can then be added to the home screen of the app, where it’s ready to activate with one tap.</p><p>It’s also possible to create a home screen widget, where a single tap fires up the E35 and sets it to work.</p><p>Other useful app settings include the child lock, which stops small people (and pets!) from pressing the robot’s two buttons, and off-peak charging, which you can program to coincide with cheaper overnight electricity rates. Since I have an electric car tariff, I set the Eufy to charge overnight when power is significantly cheaper.</p><p>All that’s missing is a mop-only mode. This is a little frustrating for Eufy to omit, since I’d prefer to have my robot tackle a dried-on hard floor stain with its mop first, rather than vacuum the floor. Ideally, the robot should approach such a stain in reverse, mop-first, rather than risk it transferring onto the brushes before applying water and detergent.</p><ul><li><strong>App score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-eufy-omni-e35"><span>Should you buy the Eufy Omni E35?</span></h3><div ><table><caption>Eufy Omni E35 score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The Omni E35 feels like much better value than some of Eufy’s more expensive robotic vacuum cleaners, especially from its flagship S family. The E35 offers superb vacuuming and strong mopping performance, with smart navigation and a compact design at a more accessible price than models with superfluous bells and whistles.</p></td><td  ><p>4.5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Compact and relatively attractive, as far as robovacs go, the E35 benefits from a clever anti-tangle brush design, along with a high-performance mop that washes and dries itself. It cleans right into the corners of every room, but can’t raise itself up to clear raised rugs as well as the more expensive Omni S2.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Its superb vacuuming performance is reason enough to buy this robovac. It really does leave your carpets spotless, while also mopping hard floors well, navigating reliably, and thoroughly cleaning itself after every use. It also works quickly, quietly, and reliably, not once getting stuck or lost during my testing.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>Eufy’s app continues to impress, with a clean interface that is easy to navigate. It offers just the right amount of functionality and customization without being overwhelming. Shortcuts and iOS widget functionality are welcome additions, along with a child lock and off-peak charging.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-6">Buy it if</h2><div class="product"><p><strong>You want a hands-off robovac</strong></p><p>Eufy says this robot can operate hands-free for up to 60 days – and even after that, you’ll likely only need to replenish the water and perhaps replace the dust bag. The self-cleaning really is that good.</p></div><p>I set up the Eufy Omni E35 in my own home and lived with it for a couple of weeks. During this time it was my only vacuum cleaner and mop, tackling every room of my home and cleaning up after an energetic puppy too.</p><p>After that fortnight, I conducted TechRadar’s standard robovac tests to analyze its suction, mopping and navigation skills, as well as monitoring how loud it is and checking the performance of its self-cleaning system.</p><div class="product"><p><strong>You don’t need the flagship</strong></p><p>Eufy’s Omni S2 is phenomenally good, but it’s also much more expensive than this model. Do you really need a fragrance diffuser and ozonated water? If not, save the money and buy this one instead.</p></div><div class="product"><p><strong>You value mopping as much as vacuuming</strong></p><p>If your floors are evenly split between hard floors and carpet, this robot could be perfect for you, since it manages both surfaces equally well.</p></div><h2 id="don-39-t-buy-it-if-6">Don't buy it if</h2><div class="product"><p><strong>You’re on a budget</strong></p><p>Despite being much less expensive than Eufy’s top-end S2, the E35 is still a pricey robovac. If you’re on a tighter budget, consider a more affordable model with less powerful suction or a less comprehensive mopping and self-cleaning system.</p></div><div class="product"><p><strong>You have large doorway thresholds or thick rugs</strong></p><p>Although the E35’s ability to clear 1.2-inch thresholds is good, some models can climb higher. So if you have significant differences in floor height between rooms you might want to look elsewhere.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-eufy-omni-e35"><span>How I tested the Eufy Omni E35</span></h3><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789660635467-0b8tnk56l *, #fv-chart-1789660635467-0b8tnk56l *:before, #fv-chart-1789660635467-0b8tnk56l *:after, #fv-chart-1789660635467-0b8tnk56l-slideshow *, #fv-chart-1789660635467-0b8tnk56l-slideshow *:before, #fv-chart-1789660635467-0b8tnk56l-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789660635467-0b8tnk56l, #fv-chart-1789660635467-0b8tnk56l-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789660635467-0b8tnk56l {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789660635467-0b8tnk56l .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789660635467-0b8tnk56l .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789660635467-0b8tnk56l.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660635467-0b8tnk56l .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789660635467-0b8tnk56l-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789660635467-0b8tnk56l .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789660635467-0b8tnk56l .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789660635467-0b8tnk56l .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789660635467-0b8tnk56l .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789660635467-0b8tnk56l .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789660635467-0b8tnk56l.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-expand-btn, #fv-chart-1789660635467-0b8tnk56l .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-expand-btn:hover, #fv-chart-1789660635467-0b8tnk56l .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789660635467-0b8tnk56l .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789660635467-0b8tnk56l .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789660635467-0b8tnk56l .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789660635467-0b8tnk56l .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789660635467-0b8tnk56l .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-row, #fv-chart-1789660635467-0b8tnk56l .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789660635467-0b8tnk56l.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660635467-0b8tnk56l.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789660635467-0b8tnk56l.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789660635467-0b8tnk56l .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789660635467-0b8tnk56l .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789660635467-0b8tnk56l .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789660635467-0b8tnk56l .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789660635467-0b8tnk56l .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789660635467-0b8tnk56l .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789660635467-0b8tnk56l .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-pie-container,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stacked-product,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-grouped-bar-product,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stacked-product,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-label,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-grouped-product-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-label,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-container,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-cluster,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-container,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-x-axis-wrapper,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-x-axis-label-space,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-x-axis-chart-space,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-benchmark-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-dropdown-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-carousel-nav-btn,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-chart-title,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-chart-subhead,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-header,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-wrapper,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-vs,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select-container,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-versus-select,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660635467-0b8tnk56l.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789660635467-0b8tnk56l .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-row,#fv-chart-1789660635467-0b8tnk56l .fv-stacked-product,#fv-chart-1789660635467-0b8tnk56l .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-label,#fv-chart-1789660635467-0b8tnk56l .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-container,#fv-chart-1789660635467-0b8tnk56l .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660635467-0b8tnk56l .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660635467-0b8tnk56l .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660635467-0b8tnk56l .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-logo,#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660635467-0b8tnk56l .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660635467-0b8tnk56l .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660635467-0b8tnk56l .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660635467-0b8tnk56l.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test","description": "Vacuuming oats from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T15:57:15.468Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789660635467-0b8tnk56l" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Hard floor cleaning test</h3><p class="fv-chart-subhead">Vacuuming oats from hard floor using Eufy Omni E35</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789660635467-0b8tnk56l-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming oats from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/C4BRHaU4Hv9XqEbDu6gCie.jpg" alt="Oats cleaned from hard floor" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ELLq7VJRgyR9k9uxfx49ke.jpg" alt="Oats on hard floor" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789660635467-0b8tnk56l', false); });} else {initialize('fv-chart-1789660635467-0b8tnk56l', false);}})();</script></div><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1789660646444-sr9dsdz95 *, #fv-chart-1789660646444-sr9dsdz95 *:before, #fv-chart-1789660646444-sr9dsdz95 *:after, #fv-chart-1789660646444-sr9dsdz95-slideshow *, #fv-chart-1789660646444-sr9dsdz95-slideshow *:before, #fv-chart-1789660646444-sr9dsdz95-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789660646444-sr9dsdz95, #fv-chart-1789660646444-sr9dsdz95-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789660646444-sr9dsdz95 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789660646444-sr9dsdz95 .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789660646444-sr9dsdz95.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1789660646444-sr9dsdz95-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1789660646444-sr9dsdz95 .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1789660646444-sr9dsdz95 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789660646444-sr9dsdz95 .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1789660646444-sr9dsdz95 .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1789660646444-sr9dsdz95.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-expand-btn, #fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-expand-btn:hover, #fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row, #fv-chart-1789660646444-sr9dsdz95 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1789660646444-sr9dsdz95.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660646444-sr9dsdz95.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789660646444-sr9dsdz95.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789660646444-sr9dsdz95 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1789660646444-sr9dsdz95 .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-pie-container,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stacked-product,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-grouped-bar-product,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stacked-product,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-label,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-grouped-product-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-label,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-container,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-cluster,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-container,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-x-axis-wrapper,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-x-axis-label-space,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-x-axis-chart-space,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-benchmark-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-dropdown-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-carousel-nav-btn,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-chart-title,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-chart-subhead,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-header,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-wrapper,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-vs,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select-container,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-versus-select,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660646444-sr9dsdz95.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789660646444-sr9dsdz95 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row,#fv-chart-1789660646444-sr9dsdz95 .fv-stacked-product,#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-label,#fv-chart-1789660646444-sr9dsdz95 .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-container,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-cluster {width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789660646444-sr9dsdz95 .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-label-space {display: none !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-logo,#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789660646444-sr9dsdz95 .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1789660646444-sr9dsdz95.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Hard floor cleaning test","description": "Vacuuming crumbs from hard floor using Eufy Omni E35","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-17T15:57:26.444Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1789660646444-sr9dsdz95" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper  fv-is-image-compare  "><h3 class="fv-chart-title">Hard floor cleaning test</h3><p class="fv-chart-subhead">Vacuuming crumbs from hard floor using Eufy Omni E35</p><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1789660646444-sr9dsdz95-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="Vacuuming crumbs from hard floor using Eufy Omni E35" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/HKqcgwBNo6BdQZw5hg7CWe.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ExaAxwKBXgFzbAJP7sSSSe.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before</div><div class="fv-image-compare-label fv-image-compare-label-right">After</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789660646444-sr9dsdz95', false); });} else {initialize('fv-chart-1789660646444-sr9dsdz95', false);}})();</script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Tineco Floor One Station S9 Scientist Pro review: the ultimate wet and dry floor cleaner ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-two-minute-review"><span>Tineco Floor One Station S9 Scientist Pro: two-minute review</span></h3><p>In August 2026, Tineco launched its most advanced floor washer to date — the Tineco Floor One Station S9 Scientist Pro Wet and Dry Vacuum. With a suction power of up to 25,000 Pa, it’s one of the most powerful wet-dry vacuums on the market, picking up fine materials like flour in a single pass and large materials like 8-12 leaves in less than a minute. With the lie flat design, you can reach further under furniture. Side edge cleaning doesn’t get better than this. You can clean along the front of the vacuum up to about one-half to one-eighth of an inch. With a battery that lasts 65-75 minutes on Auto mode and up to 100 minutes on Quiet mode, you can clean most houses in a single go. </p><p>Thanks to four cleaning modes, including a dirt detect mode, the Tineco Floor ONE Station S9 Scientist Pro Wet and Dry Vacuum soared through our various cleaning tests from dry debris to wet messes and stubborn stains. A HydroBurst sprayer that can spray solution on tough stains is a great addition, but kind of unnecessary since the mopping power is exceptionally good. Not only does the wet-dry vacuum use hot water to clean (and continuously washes the brushroll as it mops), but the brushroll presses against the floor for a deeper clean and utilizes a streak-free scraper when the wet-dry vacuum goes in reverse. This helps to remove tough messes and prevent streaks or water stains.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="o68AgTZc4L8mYZLA5mT3Yf" name="PXL_20260823_204701583" alt="Person vacuuming with Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner" src="https://cdn.mos.cms.futurecdn.net/o68AgTZc4L8mYZLA5mT3Yf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The most notable upgrade, however, is the Smart Refresh Station. Tineco clearly took inspiration from robot vacuum bases and created a base that automatically refills the wet-dry vacuum with cleaning solution and clean water from a 5-liter water tank. This reduces the maintenance required, which is already impressive considering the base uses hot water and hot air to clean the brushroll. Maybe soon enough Tineco will surprise us with a base that removes dirty water and debris too. </p><p>Perhaps the biggest drawback to this wet-dry vacuum is the price. It’s one of the highest on the market. If you’re willing to do a little more maintenance, the Tineco Floor One S9 Artist Pro cleans just as well. Still, I can’t deny that the Floor ONE Station S9 Scientist Pro Wet and Dry Vacuum might do better with larger debris and is a great investment for those with larger homes who want to clean their space on a single charge. </p><p>Keep reading for my full review of the Tineco Floor ONE Station S9 Scientist Pro Wet and Dry Vacuum and see why it’s currently my favorite on the market. </p><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-price-and-availability"><span>Tineco Floor One Station S9 Scientist Pro: price and availability</span></h3><ul><li><strong>List price: </strong>$1,199 (about £880 / AU$1,660)</li><li><strong>Launch date: </strong>August 2026</li><li><strong>Availability: </strong>US</li></ul><p>The Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum launched in the US in August 2026 at a list price of $1,199 (about £880 / AU$1,660), making it Tineco’s most expensive wet-dry vacuum and a premium-priced wet-dry vacuum on the wider market. It’s sold through Tineco, as well as third-party retailers like Amazon and Walmart. </p><p>The price is not surprising, considering it may be the first wet-dry vacuum to offer a base station that auto refills the unit with water and solution. I’ve been testing wet-dry vacuums for years, and though this isn’t new technology (in that we see it utilized with wet-dry robot vacuums), it is new for wet-dry vacuum bases. Add in the exceptional battery life, solution sprayer, and streak-free scraper technology, and this price makes sense. </p><p>Perhaps during the holidays, the Tineco Floor ONE Station S9 Scientist Pro will be discounted. For now, you could go with the equally exceptional Tineco Floor One S9 Artist Pro Wet Dry Vacuum if you’re willing to refill the water tank by hand. It’s usually $849, but it’s discounted to $599, and I can say firsthand that it has a similar cleaning prowess as the S9 Scientist Pro. </p><ul><li><strong>Value score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-specs"><span>Tineco Floor One Station S9 Scientist Pro: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Max suction</p></td><td  ><p>25,000 Pa</p></td></tr><tr><td class="firstcol " ><p>Dimensions:</p></td><td  ><p>9.5 x 10.25 x 43 inches (the unit), 12 x 11.25 x 17 inches (base only)</p></td></tr><tr><td class="firstcol " ><p>Water tank volumes</p></td><td  ><p>0.85 L on the unit, 5L on the base (clean) / 0.72 L (dirty)</p></td></tr><tr><td class="firstcol " ><p>Filter</p></td><td  ><p>HEPA filter</p></td></tr><tr><td class="firstcol " ><p>Max runtime</p></td><td  ><p>Up to 100 mins</p></td></tr><tr><td class="firstcol " ><p>Recharge time</p></td><td  ><p>Approx 3-4 hours</p></td></tr><tr><td class="firstcol " ><p>Tools</p></td><td  ><p>Brush to clean dirty water tank</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-design"><span>Tineco Floor One Station S9 Scientist Pro: design</span></h3><ul><li><strong>180-degree lie-flat design for hard-to-reach places</strong></li><li><strong>Four cleaning modes and a solution sprayer for tough stains</strong></li><li><strong>Self-cleaning and clean water auto-refilling base </strong></li></ul><p>It took minutes to put the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum together. All I had to do was remove it from the packaging, slot the handle into the unit, and put it to charge on the base. A bottle of cleaning solution, extra brushroll, and a cleaning brush were provided in the packaging. </p><p>The first few things I noticed about the design were the thickness of the vacuum head and the sleek rectangular box design of the body. It looks almost robotic-like, and as I delved further into the design, it makes a lot more sense why the vacuum looks the way it does. </p><p>The Tineco Floor ONE Station S9 Scientist Pro Wet Dry Vacuum is 30lbs, so it’s not lightweight, but thanks to a self-propel system, it doesn’t feel heavy. I liked that vacuum head and the body are flexible and twist and turn easily. The wet-dry vacuum can also lie 180-degree flat making it easy to reach under beds and sofas to clean. This is possible because the dirty water tank is on the back of the vacuum body and the clean water tank is on the top of the vacuum head — hence why the vacuum head is so bulky. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="bPVrQbDo4wNVdHmgTx67Lg" name="PXL_20260823_212321404" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner having cleaned up spill" src="https://cdn.mos.cms.futurecdn.net/bPVrQbDo4wNVdHmgTx67Lg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" 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 streak-free scraper under the vacuum head lifts when you push the vacuum forward and drops when you pull it backwards, so that it can scrape excess water and tough stains. This results in a completely clean floor free of water stains and streaks. A white headlight helps to illuminate dark spaces, while a comb and scraper near the brushroll prevents the tangling of hair and other debris. </p><p>A small LED screen is placed on the handle with three buttons. The power button turns the unit on and off, while the change mode button lets you move between the four cleaning modes — Auto, Max, Quiet, and Suction. The mode in use and battery life appear on the LED screen.  A HydroBurst button causes cleaning solution to spray from the front of the vacuum head onto tough stains. </p><p>Tineco has done something a bit different with the Floor One Station S9 Scientist Pro Wet Dry Vacuum in terms of the Auto Mode (or the dirt detect system). When using Auto Mode, a light blue digital ring on the front of the unit’s body appears. Parts of the ring turn red to notify you how dirty the floor is. The more red the ring is, the dirtier the floor. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="kZMSdWQ2LPH8UPExXiijJg" name="PXL_20260823_211310244" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming under low furniture" src="https://cdn.mos.cms.futurecdn.net/kZMSdWQ2LPH8UPExXiijJg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While this digital display is intuitive, there are seven status displays in total that appear on the front of the vacuum’s body and not all of them are easy to remember. The seven displays are Dirt Level, Battery, HydroBurst, Self-Cleaning, Drying Mode, Malfunction, and Water Filling Indicators. Each one has a different shape and a different color indicator. This is probably the biggest design drawback for me, as I think Tineco could’ve displayed such indicators in an easier-to-understand method. With the voice commands, you’ll understand what each indicator means, but if you turn off the voice commands, you might find yourself slightly confused. </p><p>There is also a self-cleaning button on the top of the handle. It’s to be pressed when the wet-dry vacuum is on the base. Three buttons appear on top of the vacuum body when it’s on the base. The 'Hot Water Refill' button refills the wet-dry vacuum with hot water, while the 'Silent' button results in a longer brushroll drying period. The brushroll dries in five minutes if you press the 'Flash' button. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="GQXiDGU5MywfHP8vTGGM8f" name="PXL_20260823_213119225" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner display screen" src="https://cdn.mos.cms.futurecdn.net/GQXiDGU5MywfHP8vTGGM8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The base may be large, but consider this: it charges the wet-dry vacuum, self-cleans it with hot water and air, <em>and </em>auto refills the wet-dry vacuum’s clean water tank with water and cleaning solution. At the back of the base there is a cleaning solution compartment that can hold an entire bottle of Tineco cleaning solution. A 5-liter tank of clean water is then placed on top the cleaning solution compartment, so that when the wet-dry vacuum is on the base, the base can move hot water into the wet-dry vacuum hands-free. </p><p>While the design outshines other wet-dry vacuums on the market, I see some room for slight improvements in the future. </p><ul><li><strong>Design score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-performance"><span>Tineco Floor One Station S9 Scientist Pro: performance</span></h3><ul><li><strong>Phenomenal cleaning capabilities with great edge cleaning</strong></li><li><strong>Does a outstanding job suctioning liquids and large debris like leaves</strong></li><li><strong>Front edge cleaning varies between ½ and 1/8th of an inch from the wall</strong></li></ul><p>From the get-go, I really liked how the handle of the the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum twisted and turned so easily. This especially helped when I laid the wet-dry vacuum flat to clean under my bed. I was able to reach around the legs of my bedframe easily. </p><p>The dirt detection system was fantastic, recognizing even the smallest amounts of dust. My home is very dusty because it’s historic, and I was glad to see that the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum suctioned up the dust rather than spreading it about or pushing it back into the air. The headlight illuminated dust and debris in dark spaces, though I would’ve preferred a green rather than a white headlight as green lights make dust and debris more visible. At least, I could trust the Auto Mode to 'see' hidden stains or dirt that I couldn’t see under the white headlight or with the naked eye. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="eRcaKaQhmf3Xr2MoE6NzKg" name="PXL_20260823_205714802" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming up leaves" src="https://cdn.mos.cms.futurecdn.net/eRcaKaQhmf3Xr2MoE6NzKg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The suctioning capabilities of the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum are beyond impressive, which isn’t surprising considering it has a suction power of 25,000 Pa. (Trust me, that’s massive.) I used the wet-dry vacuum to pick up a lot of dried leaves that had fallen around one of my plants. I don’t think I’ve ever seen a wet-dry vacuum accomplish such a task in such a short time. Most struggle to suction one or two leaves, much less 10. Even the reverse cleaning was better than most wet-dry vacuums. </p><p>One of the first things I tested was the edge cleaning. There was no space between the wall and the side edge of the vacuum head. However, I noticed that there was about half an inch along the front edge of the vacuum head and the wall. That was a bit disappointing, until I realized that with certain things, like my really tall thresholds, the space shortened to about 1/8th of an inch. After some experimenting, I realized that if I approached the wall slowly with the front of the vacuum head, the front edge cleaning improved and I could clean closer to objects or walls. </p><p>Because the wet-dry vacuum’s head is so bulky, I couldn’t reach under cabinet overhangs. This has been my biggest gripe with wet-dry vacuums since they started putting the clean water tank on the top of the vacuum head because it means I have to go back through the house with a vacuum to clean those spaces. </p><p>The clean water tank lasted about 30 minutes (which is quite long), while the dirty water tank had to be emptied at about 40 minutes. These results are well above average. </p><p>While most people may use a robot vacuum or vacuum to clean daily, the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum is a really great wet-dry vacuum to have on hand for weekly deep home cleanings and stubborn stains. </p><h2 id="cleaning-tests">Cleaning tests</h2><p>I ran several cleaning tests to see how well the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum Cleaner cleans on Auto mode and was impressed with the results. I sprinkled flour, coffee, and crunchy oats on my laminate flooring, and spilled a variety of liquids like water, soy sauce, and barbeque sauce. I also place an egg on the ground and sprayed some chocolate sauce and siracha sauce and let them both dry slightly. </p><p>The Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum Cleaner picked up all the fine and large materials in a single pass, though some flour got stuck on the wheels when I reversed over the flour. The Suction mode did a fantastic job suctioning up the water. I used the Auto mode for the barbecue and soy sauces just to ensure the floor wasn’t sticky afterwards. It cleaned both sauces in a single go without any remaining residue. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5AssxNt3FEf3jEVz8U9wGg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming up dry dirt" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CiDeSPcVJQHF2PcvBr8Hof-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming up flour" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>While the wet-dry vacuum picked up the slightly dry siracha sauce in a single pass, it took about four passes to pick up the driest and thickest parts of chocolate sauce on auto mode. The thinner areas of the chocolate sauce only took a single pass. </p><p>I test a lot of wet-dry vacuums throughout the year, and Tineco consistently beats every other brand in cleaning capabilities. The Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum Cleaner didn’t disappoint, and proves that this wet-dry vacuum cleans the most consistently and effectively (and with less effort!) compared to others on the market. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/RwZTpNVWHyZr3HJ5cFzNMg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner about to clean chocolate syrup off hard wood floor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eoaokRN2JMCznEmmEZxUJg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner about to clean egg off hard wood floor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HMpEvQCgGf58fnyTedMrGg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner cleaning up wet spill" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 id="maintenance">Maintenance</h2><p>The Tineco Floor One Station Scientist Pro Wet Dry Vacuum stands out among all wet-dry vacuums because of its base which is outfitted with a 5-liter water tank and a solution bay (that can hold a single solution bottle). The base automatically refills the wet-dry vacuum’s clean water tank in less than 30 seconds – and it’s pretty amazing to watch. </p><p>After each cleaning session, I placed the wet-dry vacuum on the base and ran the self-cleaning system which uses hot water to clean the brushroll. This hot water process is quite effective as the brushroll comes out super clean. I only found a very small amount of dust under the vacuum head when I removed the brushroll — far less than I have found with other wet-dry vacuums that I’ve tested. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zdy4g6gMBB6BoE9BGxH7cf-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner in dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YiGtqbxwCmG2hW8tCxEuKf-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner in dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YaQ7c6yHvkM29rH9EijjXf-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner in dock" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The base dries the brushroll and filter with hot air that’s 230 degrees Fahrenheit. Flash dry takes five minutes to dry the brushroll, while silent dry results in a quiet (40 dB sound rating) drying process. I wish I could say that the brushroll was completely dry when using either of these settings, but there was a very slight amount of dampness. On the flash dry setting, the brushroll was 95% dry, while the silent dry mode made the brushroll about 98% dry. </p><p>The only thing the base can’t do is empty the dirty water tank – so you have to do it by hand. A brush is provided by Tineco to remove debris. The debris catcher design could be better, but it catches a decent amount. </p><ul><li><strong>Performance score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-battery-life"><span>Tineco Floor ONE Station S9 Scientist Pro: battery life</span></h3><p>The battery life of the Tineco Floor One Station Scientist Pro Wet Dry Vacuum is more than adequate for most homes. I was able to clean my 1,600-square-foot home in 30 minutes on Auto mode, and still have 50% of the battery life left. </p><p>Overall, the battery lasted between 65-73 minutes on Auto mode, which is in-line with Tineco’s predictions that the battery, on Auto mode, can last up to 75 minutes. Remember on Auto mode, the vacuum automatically increases the suction and cleaning power depending on how dirty the floors are. It could use more power and thus more battery life if your floors are especially dirty. </p><p><strong>Battery score: 5 out of 5</strong></p><h3 class="article-body__section" id="section-should-you-buy-the-tineco-floor-one-station-s9-scientist-pro"><span>Should you buy the Tineco Floor One Station S9 Scientist Pro?</span></h3><div ><table><thead><tr><th class="firstcol " ><p><strong>Attribute</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Score</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value for money</p></td><td  ><p>This wet-dry vacuum is a luxury buy, but it offers some high-tech features and an auto refill base that is one of the first of its kind on the market. </p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>A sleek unit that lies flat and is outfitted with an intuitive scraper. The new indicator system – lights and shapes on the vacuum’s body – notes dirty floors, low battery, or other features/settings. </p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Exceeds all expectations when it comes to vacuuming and mopping hard floors. Side and front edge cleaning are solid. </p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>With 65-100 minutes of battery life, this wet-dry vacuum can clean small to large homes on a single charge. </p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-7">Buy it if</h2><div class="product"><p><strong>You want something that can pick up tough stains and dirt and dust in hard-to-reach spaces</strong></p><p>The dirt detect technology automatically increases the suction and mopping power when the vacuum recognizes a dirty floor. If need be, there is a HydroBurst function that sprays solution on sticky or tough stains to break them down more easily. Plus, with the vacuum’s ability to lie flat and a 25,000 Pa suction, you can reach far under your bedframe or sofas to clean dust, dirt, and small and large debris. </p></div><div class="product"><p><strong>You have a medium-to-large house</strong></p><p>When using the Auto Dirt Detect function, this vacuum can last between 65-75 minutes. Quiet mode results in up to 100 minutes of clean time. No matter which mode you use, you can likely clean your medium or large home on a single charge. </p></div><div class="product"><p><strong>You like doing very little maintenance</strong></p><p>You don’t have to fill this vacuum with clean water or cleaning solution because the base does that for you. It even cleans the brushroll with hot water and dries the filter and brushroll with hot air. </p></div><h2 id="don-39-t-buy-it-if-7">Don't buy it if</h2><div class="product"><p><strong>Your home has a lot of carpets</strong></p><p>Some wet-dry vacuums can clean carpets or rugs, but not this one. It’s a better choice for those with hardwood, laminate, stone, or tiled floors. </p></div><div class="product"><p><strong>You’re limited on space. </strong></p><p>This wet-dry vacuum has one of the larger bases that I’ve seen, so it may not be ideal for those who are limited in space or don’t find the bulkiness conducive to their dwelling aesthetic. There are plenty of wet-dry vacuums that are better suited for those who live in an apartment or small home. </p></div><div class="product"><p><strong>You’re on a budget</strong></p><p>This is one of the most expensive wet-dry vacuums on the market, and while it does a fantastic job, you can find plenty others — even from Tineco — that clean just as well for half the cost. </p></div><h3 class="article-body__section" id="section-how-i-tested-the-tineco-floor-one-station-s9-scientist-pro"><span>How I tested the Tineco Floor One Station S9 Scientist Pro </span></h3><p>Testing the Tineco Floor One Station Scientist Pro Wet Dry Vacuum occurred over multiple weeks during a Texas summer in my 106-year-old house that produces a lot of dust and has multiple high traffic areas with dirt and debris.</p><p>My 1,600-square-foot house is a mix of laminate and historic hardwood flooring, making it a great testing space. I ran a variety of cleaning tests with various liquids, barbeque sauce, eggs, flour, coffee, and dried chocolate sauce, making sure to utilize different cleaning modes and taking notes on things like edge cleaning, battery life, and maintenance requirements. For more details, see <a href="https://www.techradar.com/news/how-we-test" target="_blank">how we test, review, and rate products at TechRadar.</a></p><p><em>First reviewed September 2026 </em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/vacuums/tinecos-floor-one-station-s9-scientist-pro-is-the-only-floor-cleaner-you-need-for-wet-and-dry-mess-provided-your-budget-can-take-the-hit</link>
                                                                            <description>
                            <![CDATA[ A high-tech, low-effort tool for taking care of messy spills, tough stains, fine dust, and coarse debris. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vBWK2mkrBJMXFRj7ZjRX79</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/grYa5tA9ZMMqQBjDKcmREf-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 10 Sep 2026 14:31:08 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alex Temblador ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/jTGsJwJ8G6wEzNnT2RLRMi-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Alex Temblador is a Dallas, Texas-based award-winning freelance writer and award-winning author of Half Outlaw and Secrets of the Casa Rosada. While she&#039;s best known for her coverage of travel, arts, and culture, she began to write more about design, architecture, and home products when she bought her 102-year-old house in 2020. Since then, she&#039;s reviewed products for outlets such as Real Homes, Gardeningetc., Homes &amp; Gardens, Outside, and TripSavvy. When she&#039;s not writing articles or reviews, Alex is jet-setting around the world, working on her next novel, or teaching a literary class. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/grYa5tA9ZMMqQBjDKcmREf-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner with accessories]]></media:description>                                                            <media:text><![CDATA[Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner with accessories]]></media:text>
                                <media:title type="plain"><![CDATA[Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner with accessories]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/grYa5tA9ZMMqQBjDKcmREf-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-two-minute-review"><span>Tineco Floor One Station S9 Scientist Pro: two-minute review</span></h3><p>In August 2026, Tineco launched its most advanced floor washer to date — the Tineco Floor One Station S9 Scientist Pro Wet and Dry Vacuum. With a suction power of up to 25,000 Pa, it’s one of the most powerful wet-dry vacuums on the market, picking up fine materials like flour in a single pass and large materials like 8-12 leaves in less than a minute. With the lie flat design, you can reach further under furniture. Side edge cleaning doesn’t get better than this. You can clean along the front of the vacuum up to about one-half to one-eighth of an inch. With a battery that lasts 65-75 minutes on Auto mode and up to 100 minutes on Quiet mode, you can clean most houses in a single go. </p><p>Thanks to four cleaning modes, including a dirt detect mode, the Tineco Floor ONE Station S9 Scientist Pro Wet and Dry Vacuum soared through our various cleaning tests from dry debris to wet messes and stubborn stains. A HydroBurst sprayer that can spray solution on tough stains is a great addition, but kind of unnecessary since the mopping power is exceptionally good. Not only does the wet-dry vacuum use hot water to clean (and continuously washes the brushroll as it mops), but the brushroll presses against the floor for a deeper clean and utilizes a streak-free scraper when the wet-dry vacuum goes in reverse. This helps to remove tough messes and prevent streaks or water stains.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="o68AgTZc4L8mYZLA5mT3Yf" name="PXL_20260823_204701583" alt="Person vacuuming with Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner" src="https://cdn.mos.cms.futurecdn.net/o68AgTZc4L8mYZLA5mT3Yf-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The most notable upgrade, however, is the Smart Refresh Station. Tineco clearly took inspiration from robot vacuum bases and created a base that automatically refills the wet-dry vacuum with cleaning solution and clean water from a 5-liter water tank. This reduces the maintenance required, which is already impressive considering the base uses hot water and hot air to clean the brushroll. Maybe soon enough Tineco will surprise us with a base that removes dirty water and debris too. </p><p>Perhaps the biggest drawback to this wet-dry vacuum is the price. It’s one of the highest on the market. If you’re willing to do a little more maintenance, the Tineco Floor One S9 Artist Pro cleans just as well. Still, I can’t deny that the Floor ONE Station S9 Scientist Pro Wet and Dry Vacuum might do better with larger debris and is a great investment for those with larger homes who want to clean their space on a single charge. </p><p>Keep reading for my full review of the Tineco Floor ONE Station S9 Scientist Pro Wet and Dry Vacuum and see why it’s currently my favorite on the market. </p><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-price-and-availability"><span>Tineco Floor One Station S9 Scientist Pro: price and availability</span></h3><ul><li><strong>List price: </strong>$1,199 (about £880 / AU$1,660)</li><li><strong>Launch date: </strong>August 2026</li><li><strong>Availability: </strong>US</li></ul><p>The Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum launched in the US in August 2026 at a list price of $1,199 (about £880 / AU$1,660), making it Tineco’s most expensive wet-dry vacuum and a premium-priced wet-dry vacuum on the wider market. It’s sold through Tineco, as well as third-party retailers like Amazon and Walmart. </p><p>The price is not surprising, considering it may be the first wet-dry vacuum to offer a base station that auto refills the unit with water and solution. I’ve been testing wet-dry vacuums for years, and though this isn’t new technology (in that we see it utilized with wet-dry robot vacuums), it is new for wet-dry vacuum bases. Add in the exceptional battery life, solution sprayer, and streak-free scraper technology, and this price makes sense. </p><p>Perhaps during the holidays, the Tineco Floor ONE Station S9 Scientist Pro will be discounted. For now, you could go with the equally exceptional Tineco Floor One S9 Artist Pro Wet Dry Vacuum if you’re willing to refill the water tank by hand. It’s usually $849, but it’s discounted to $599, and I can say firsthand that it has a similar cleaning prowess as the S9 Scientist Pro. </p><ul><li><strong>Value score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-specs"><span>Tineco Floor One Station S9 Scientist Pro: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Max suction</p></td><td  ><p>25,000 Pa</p></td></tr><tr><td class="firstcol " ><p>Dimensions:</p></td><td  ><p>9.5 x 10.25 x 43 inches (the unit), 12 x 11.25 x 17 inches (base only)</p></td></tr><tr><td class="firstcol " ><p>Water tank volumes</p></td><td  ><p>0.85 L on the unit, 5L on the base (clean) / 0.72 L (dirty)</p></td></tr><tr><td class="firstcol " ><p>Filter</p></td><td  ><p>HEPA filter</p></td></tr><tr><td class="firstcol " ><p>Max runtime</p></td><td  ><p>Up to 100 mins</p></td></tr><tr><td class="firstcol " ><p>Recharge time</p></td><td  ><p>Approx 3-4 hours</p></td></tr><tr><td class="firstcol " ><p>Tools</p></td><td  ><p>Brush to clean dirty water tank</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-design"><span>Tineco Floor One Station S9 Scientist Pro: design</span></h3><ul><li><strong>180-degree lie-flat design for hard-to-reach places</strong></li><li><strong>Four cleaning modes and a solution sprayer for tough stains</strong></li><li><strong>Self-cleaning and clean water auto-refilling base </strong></li></ul><p>It took minutes to put the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum together. All I had to do was remove it from the packaging, slot the handle into the unit, and put it to charge on the base. A bottle of cleaning solution, extra brushroll, and a cleaning brush were provided in the packaging. </p><p>The first few things I noticed about the design were the thickness of the vacuum head and the sleek rectangular box design of the body. It looks almost robotic-like, and as I delved further into the design, it makes a lot more sense why the vacuum looks the way it does. </p><p>The Tineco Floor ONE Station S9 Scientist Pro Wet Dry Vacuum is 30lbs, so it’s not lightweight, but thanks to a self-propel system, it doesn’t feel heavy. I liked that vacuum head and the body are flexible and twist and turn easily. The wet-dry vacuum can also lie 180-degree flat making it easy to reach under beds and sofas to clean. This is possible because the dirty water tank is on the back of the vacuum body and the clean water tank is on the top of the vacuum head — hence why the vacuum head is so bulky. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="bPVrQbDo4wNVdHmgTx67Lg" name="PXL_20260823_212321404" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner having cleaned up spill" src="https://cdn.mos.cms.futurecdn.net/bPVrQbDo4wNVdHmgTx67Lg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" 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 streak-free scraper under the vacuum head lifts when you push the vacuum forward and drops when you pull it backwards, so that it can scrape excess water and tough stains. This results in a completely clean floor free of water stains and streaks. A white headlight helps to illuminate dark spaces, while a comb and scraper near the brushroll prevents the tangling of hair and other debris. </p><p>A small LED screen is placed on the handle with three buttons. The power button turns the unit on and off, while the change mode button lets you move between the four cleaning modes — Auto, Max, Quiet, and Suction. The mode in use and battery life appear on the LED screen.  A HydroBurst button causes cleaning solution to spray from the front of the vacuum head onto tough stains. </p><p>Tineco has done something a bit different with the Floor One Station S9 Scientist Pro Wet Dry Vacuum in terms of the Auto Mode (or the dirt detect system). When using Auto Mode, a light blue digital ring on the front of the unit’s body appears. Parts of the ring turn red to notify you how dirty the floor is. The more red the ring is, the dirtier the floor. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="kZMSdWQ2LPH8UPExXiijJg" name="PXL_20260823_211310244" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming under low furniture" src="https://cdn.mos.cms.futurecdn.net/kZMSdWQ2LPH8UPExXiijJg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While this digital display is intuitive, there are seven status displays in total that appear on the front of the vacuum’s body and not all of them are easy to remember. The seven displays are Dirt Level, Battery, HydroBurst, Self-Cleaning, Drying Mode, Malfunction, and Water Filling Indicators. Each one has a different shape and a different color indicator. This is probably the biggest design drawback for me, as I think Tineco could’ve displayed such indicators in an easier-to-understand method. With the voice commands, you’ll understand what each indicator means, but if you turn off the voice commands, you might find yourself slightly confused. </p><p>There is also a self-cleaning button on the top of the handle. It’s to be pressed when the wet-dry vacuum is on the base. Three buttons appear on top of the vacuum body when it’s on the base. The 'Hot Water Refill' button refills the wet-dry vacuum with hot water, while the 'Silent' button results in a longer brushroll drying period. The brushroll dries in five minutes if you press the 'Flash' button. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="GQXiDGU5MywfHP8vTGGM8f" name="PXL_20260823_213119225" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner display screen" src="https://cdn.mos.cms.futurecdn.net/GQXiDGU5MywfHP8vTGGM8f-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The base may be large, but consider this: it charges the wet-dry vacuum, self-cleans it with hot water and air, <em>and </em>auto refills the wet-dry vacuum’s clean water tank with water and cleaning solution. At the back of the base there is a cleaning solution compartment that can hold an entire bottle of Tineco cleaning solution. A 5-liter tank of clean water is then placed on top the cleaning solution compartment, so that when the wet-dry vacuum is on the base, the base can move hot water into the wet-dry vacuum hands-free. </p><p>While the design outshines other wet-dry vacuums on the market, I see some room for slight improvements in the future. </p><ul><li><strong>Design score: 4.5 out of 5</strong></li></ul><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-performance"><span>Tineco Floor One Station S9 Scientist Pro: performance</span></h3><ul><li><strong>Phenomenal cleaning capabilities with great edge cleaning</strong></li><li><strong>Does a outstanding job suctioning liquids and large debris like leaves</strong></li><li><strong>Front edge cleaning varies between ½ and 1/8th of an inch from the wall</strong></li></ul><p>From the get-go, I really liked how the handle of the the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum twisted and turned so easily. This especially helped when I laid the wet-dry vacuum flat to clean under my bed. I was able to reach around the legs of my bedframe easily. </p><p>The dirt detection system was fantastic, recognizing even the smallest amounts of dust. My home is very dusty because it’s historic, and I was glad to see that the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum suctioned up the dust rather than spreading it about or pushing it back into the air. The headlight illuminated dust and debris in dark spaces, though I would’ve preferred a green rather than a white headlight as green lights make dust and debris more visible. At least, I could trust the Auto Mode to 'see' hidden stains or dirt that I couldn’t see under the white headlight or with the naked eye. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2560px;"><p class="vanilla-image-block" style="padding-top:56.41%;"><img id="eRcaKaQhmf3Xr2MoE6NzKg" name="PXL_20260823_205714802" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming up leaves" src="https://cdn.mos.cms.futurecdn.net/eRcaKaQhmf3Xr2MoE6NzKg-1920-80.jpg" mos="" align="middle" fullscreen="" width="2560" height="1444" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The suctioning capabilities of the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum are beyond impressive, which isn’t surprising considering it has a suction power of 25,000 Pa. (Trust me, that’s massive.) I used the wet-dry vacuum to pick up a lot of dried leaves that had fallen around one of my plants. I don’t think I’ve ever seen a wet-dry vacuum accomplish such a task in such a short time. Most struggle to suction one or two leaves, much less 10. Even the reverse cleaning was better than most wet-dry vacuums. </p><p>One of the first things I tested was the edge cleaning. There was no space between the wall and the side edge of the vacuum head. However, I noticed that there was about half an inch along the front edge of the vacuum head and the wall. That was a bit disappointing, until I realized that with certain things, like my really tall thresholds, the space shortened to about 1/8th of an inch. After some experimenting, I realized that if I approached the wall slowly with the front of the vacuum head, the front edge cleaning improved and I could clean closer to objects or walls. </p><p>Because the wet-dry vacuum’s head is so bulky, I couldn’t reach under cabinet overhangs. This has been my biggest gripe with wet-dry vacuums since they started putting the clean water tank on the top of the vacuum head because it means I have to go back through the house with a vacuum to clean those spaces. </p><p>The clean water tank lasted about 30 minutes (which is quite long), while the dirty water tank had to be emptied at about 40 minutes. These results are well above average. </p><p>While most people may use a robot vacuum or vacuum to clean daily, the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum is a really great wet-dry vacuum to have on hand for weekly deep home cleanings and stubborn stains. </p><h2 id="cleaning-tests">Cleaning tests</h2><p>I ran several cleaning tests to see how well the Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum Cleaner cleans on Auto mode and was impressed with the results. I sprinkled flour, coffee, and crunchy oats on my laminate flooring, and spilled a variety of liquids like water, soy sauce, and barbeque sauce. I also place an egg on the ground and sprayed some chocolate sauce and siracha sauce and let them both dry slightly. </p><p>The Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum Cleaner picked up all the fine and large materials in a single pass, though some flour got stuck on the wheels when I reversed over the flour. The Suction mode did a fantastic job suctioning up the water. I used the Auto mode for the barbecue and soy sauces just to ensure the floor wasn’t sticky afterwards. It cleaned both sauces in a single go without any remaining residue. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/5AssxNt3FEf3jEVz8U9wGg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming up dry dirt" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CiDeSPcVJQHF2PcvBr8Hof-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner vacuuming up flour" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>While the wet-dry vacuum picked up the slightly dry siracha sauce in a single pass, it took about four passes to pick up the driest and thickest parts of chocolate sauce on auto mode. The thinner areas of the chocolate sauce only took a single pass. </p><p>I test a lot of wet-dry vacuums throughout the year, and Tineco consistently beats every other brand in cleaning capabilities. The Tineco Floor One Station S9 Scientist Pro Wet Dry Vacuum Cleaner didn’t disappoint, and proves that this wet-dry vacuum cleans the most consistently and effectively (and with less effort!) compared to others on the market. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/RwZTpNVWHyZr3HJ5cFzNMg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner about to clean chocolate syrup off hard wood floor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/eoaokRN2JMCznEmmEZxUJg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner about to clean egg off hard wood floor" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HMpEvQCgGf58fnyTedMrGg-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner cleaning up wet spill" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 id="maintenance">Maintenance</h2><p>The Tineco Floor One Station Scientist Pro Wet Dry Vacuum stands out among all wet-dry vacuums because of its base which is outfitted with a 5-liter water tank and a solution bay (that can hold a single solution bottle). The base automatically refills the wet-dry vacuum’s clean water tank in less than 30 seconds – and it’s pretty amazing to watch. </p><p>After each cleaning session, I placed the wet-dry vacuum on the base and ran the self-cleaning system which uses hot water to clean the brushroll. This hot water process is quite effective as the brushroll comes out super clean. I only found a very small amount of dust under the vacuum head when I removed the brushroll — far less than I have found with other wet-dry vacuums that I’ve tested. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/zdy4g6gMBB6BoE9BGxH7cf-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner in dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YiGtqbxwCmG2hW8tCxEuKf-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner in dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YaQ7c6yHvkM29rH9EijjXf-1920-80.jpg" alt="Tineco Floor ONE Station S9 Scientist Pro wet and dry vacuum cleaner in dock" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The base dries the brushroll and filter with hot air that’s 230 degrees Fahrenheit. Flash dry takes five minutes to dry the brushroll, while silent dry results in a quiet (40 dB sound rating) drying process. I wish I could say that the brushroll was completely dry when using either of these settings, but there was a very slight amount of dampness. On the flash dry setting, the brushroll was 95% dry, while the silent dry mode made the brushroll about 98% dry. </p><p>The only thing the base can’t do is empty the dirty water tank – so you have to do it by hand. A brush is provided by Tineco to remove debris. The debris catcher design could be better, but it catches a decent amount. </p><ul><li><strong>Performance score: 4 out of 5</strong></li></ul><h3 class="article-body__section" id="section-tineco-floor-one-station-s9-scientist-pro-battery-life"><span>Tineco Floor ONE Station S9 Scientist Pro: battery life</span></h3><p>The battery life of the Tineco Floor One Station Scientist Pro Wet Dry Vacuum is more than adequate for most homes. I was able to clean my 1,600-square-foot home in 30 minutes on Auto mode, and still have 50% of the battery life left. </p><p>Overall, the battery lasted between 65-73 minutes on Auto mode, which is in-line with Tineco’s predictions that the battery, on Auto mode, can last up to 75 minutes. Remember on Auto mode, the vacuum automatically increases the suction and cleaning power depending on how dirty the floors are. It could use more power and thus more battery life if your floors are especially dirty. </p><p><strong>Battery score: 5 out of 5</strong></p><h3 class="article-body__section" id="section-should-you-buy-the-tineco-floor-one-station-s9-scientist-pro"><span>Should you buy the Tineco Floor One Station S9 Scientist Pro?</span></h3><div ><table><thead><tr><th class="firstcol " ><p><strong>Attribute</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Score</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value for money</p></td><td  ><p>This wet-dry vacuum is a luxury buy, but it offers some high-tech features and an auto refill base that is one of the first of its kind on the market. </p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>A sleek unit that lies flat and is outfitted with an intuitive scraper. The new indicator system – lights and shapes on the vacuum’s body – notes dirty floors, low battery, or other features/settings. </p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Exceeds all expectations when it comes to vacuuming and mopping hard floors. Side and front edge cleaning are solid. </p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Battery</p></td><td  ><p>With 65-100 minutes of battery life, this wet-dry vacuum can clean small to large homes on a single charge. </p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-7">Buy it if</h2><div class="product"><p><strong>You want something that can pick up tough stains and dirt and dust in hard-to-reach spaces</strong></p><p>The dirt detect technology automatically increases the suction and mopping power when the vacuum recognizes a dirty floor. If need be, there is a HydroBurst function that sprays solution on sticky or tough stains to break them down more easily. Plus, with the vacuum’s ability to lie flat and a 25,000 Pa suction, you can reach far under your bedframe or sofas to clean dust, dirt, and small and large debris. </p></div><div class="product"><p><strong>You have a medium-to-large house</strong></p><p>When using the Auto Dirt Detect function, this vacuum can last between 65-75 minutes. Quiet mode results in up to 100 minutes of clean time. No matter which mode you use, you can likely clean your medium or large home on a single charge. </p></div><div class="product"><p><strong>You like doing very little maintenance</strong></p><p>You don’t have to fill this vacuum with clean water or cleaning solution because the base does that for you. It even cleans the brushroll with hot water and dries the filter and brushroll with hot air. </p></div><h2 id="don-39-t-buy-it-if-7">Don't buy it if</h2><div class="product"><p><strong>Your home has a lot of carpets</strong></p><p>Some wet-dry vacuums can clean carpets or rugs, but not this one. It’s a better choice for those with hardwood, laminate, stone, or tiled floors. </p></div><div class="product"><p><strong>You’re limited on space. </strong></p><p>This wet-dry vacuum has one of the larger bases that I’ve seen, so it may not be ideal for those who are limited in space or don’t find the bulkiness conducive to their dwelling aesthetic. There are plenty of wet-dry vacuums that are better suited for those who live in an apartment or small home. </p></div><div class="product"><p><strong>You’re on a budget</strong></p><p>This is one of the most expensive wet-dry vacuums on the market, and while it does a fantastic job, you can find plenty others — even from Tineco — that clean just as well for half the cost. </p></div><h3 class="article-body__section" id="section-how-i-tested-the-tineco-floor-one-station-s9-scientist-pro"><span>How I tested the Tineco Floor One Station S9 Scientist Pro </span></h3><p>Testing the Tineco Floor One Station Scientist Pro Wet Dry Vacuum occurred over multiple weeks during a Texas summer in my 106-year-old house that produces a lot of dust and has multiple high traffic areas with dirt and debris.</p><p>My 1,600-square-foot house is a mix of laminate and historic hardwood flooring, making it a great testing space. I ran a variety of cleaning tests with various liquids, barbeque sauce, eggs, flour, coffee, and dried chocolate sauce, making sure to utilize different cleaning modes and taking notes on things like edge cleaning, battery life, and maintenance requirements. For more details, see <a href="https://www.techradar.com/news/how-we-test" target="_blank">how we test, review, and rate products at TechRadar.</a></p><p><em>First reviewed September 2026 </em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Philips 5000 Series Megabasket with Steam is a fabulously versatile air fryer that surprised me with consistently great results ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-30-second-review"><span>Philips 5000 Series Megabasket with Steam Air Fryer: 30-second review</span></h3><p>The Philips 5000 Series Megabasket with Steam Air Fryer is an air fryer and then some.</p><p>Sure it does a great job at being an air fryer, and so it should for the premium price tag it comes in at. The sizable 9.5L basket offers plenty of space for family-sized portions, while the handy divider allows you to cook two different foods, at differing durations and temperatures, simultaneously. It’s pretty par for the course these days, but the 5000 Series Megabasket is only just getting started.</p><p>Things are turned up a notch with the steam functionality Philips has built in. Being able to perfectly steam vegetables, fish and dumplings without the need for a separate appliance saves on counter and cupboard space, and the results here are just as good as the air fryer.</p><p>However, the versatility is kicked into overdrive with the streamfry function, allowing you to bring the best of both worlds to your food. The crispy finish of an air fryer combined with the moisture locking abilities of steam. The result? Some of the best chicken wings I’ve ever made. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7420px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FgnBHFc2ojEijCzGtuVLnX" name="5000seriesMegabasket-HandsOn-05" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/FgnBHFc2ojEijCzGtuVLnX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7420" height="4174" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All this functionality not only comes at a cost to your wallet, but also your counter top. This is a wide, tall air fryer that requires plenty of space — especially when using the steam or steamfry function, as the water vapor vents from the rear.</p><p>I’m a big fan of Philips’ controls though. The touch buttons are intuitively laid out, with easily recognizable icons that require little reference to the manual to work out - that can’t be said of all air fryer brands.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7799px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MeTQvsxgeB2gNYLqXCPLtX" name="5000seriesMegabasket-HandsOn-17" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/MeTQvsxgeB2gNYLqXCPLtX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7799" height="4387" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The basket, trays and divider are dishwasher safe, and you can also use the steam function to give the appliance its own steam clean. You will need to give the top a wipe every now and then, as the glossy finish attracts grime — but it’s a minor point in what is an overwise excellent appliance.</p><p>Whether you’re looking to make cakes, cookies, sausages, chicken wings, fish, vegetables, fries, dumplings or pretty much anything else, the Philips 5000 Series Megabasket delivers consistently great results.</p><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-price-and-availability"><span>Philips 5000 Series Megabasket with Steam Air Fryer price and availability</span></h3><ul><li><strong>At £259.99 (about $350 / AU$490), it’s at the premium end of the air fryer market</strong></li><li><strong>Available in the UK, but not in the US or Australia</strong></li></ul><p>The Philips 5000 Series Megabasket with Steam Air Fryer price is £259.99 (about $350 / AU$490), putting it at the premium end of the market, and pits it against the <a href="https://www.techradar.com/home/air-fryers/ninja-foodi-flexbasket-dual-air-fryer-review">Ninja Foodi FlexBasket</a> in the larger-basket arena.</p><p>There are cheaper, big-basket air fryers on the market that also perform well, with the <a href="https://www.techradar.com/home/air-fryers/philips-1000-series-dual-basket-air-fryer-na15x-review">Philips 1000 Series Dual Basket</a> and <a href="https://www.techradar.com/home/air-fryers/tower-elite-11-liter-flexi-drawer-air-fryer-review">Tower Elite 11 Litre Flexi Drawer</a> both coming in at around half the price of the 5000 Series.</p><p>This exact model (the NA465) isn’t available in the US and Australia, with these regions instead getting <a href="https://us.home-appliances.philips/products/philips-na551-00-00">the $349.99</a> / <a href="https://www.jbhifi.com.au/products/philips-5000-series-9l-dual-basket-airfryer-xxl-steam-black">AU$499</a> 5000 Series Dual-Basket Airfryer with Steam (NA551) with two separate drawers, rather than one large one.</p><ul><li><strong>Value score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-specifications"><span>Philips 5000 Series Megabasket with Steam Air Fryer: specifications</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Review Model</p></td><td  ><p>NA465/92</p></td></tr><tr><td class="firstcol " ><p>Number of baskets</p></td><td  ><p>1</p></td></tr><tr><td class="firstcol " ><p>Number of cooking programs</p></td><td  ><p>8</p></td></tr><tr><td class="firstcol " ><p>Cooking programs</p></td><td  ><p>Frozen fries, mixed vegetables, chicken drumsticks, tray bakes, fish, dumplings, reheat, favorite</p></td></tr><tr><td class="firstcol " ><p>Extra functions</p></td><td  ><p>Steam, Steamfry, Shake reminder, SteamClean, Adjustable basket size</p></td></tr><tr><td class="firstcol " ><p>Smart control</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p>Wattage</p></td><td  ><p>2750W</p></td></tr><tr><td class="firstcol " ><p>Capacity</p></td><td  ><p>9.5L</p></td></tr><tr><td class="firstcol " ><p>Temperature range</p></td><td  ><p>40-200 degrees C</p></td></tr><tr><td class="firstcol " ><p>Time range</p></td><td  ><p>1-180 minutes</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>496mm (L) x 329mm (W) x 355mm (H)</p></td></tr><tr><td class="firstcol " ><p>Dishwasher-safe</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>8.2kg</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-design"><span>Philips 5000 Series Megabasket with Steam Air Fryer: design</span></h3><ul><li><strong>Wide and tall, but for good reason</strong></li><li><strong>Set of tongs included in the box is a nice touch</strong></li><li><strong>Touch controls are easy to understand and well laid out</strong></li></ul><p>The Philips 5000 Series Megabasket with Steam Air Fryer is big, it’s almost as if a UFO has landed on your worktop. Wide and tall, it dominates the kitchen counter — but for good reason.</p><p>The spacious 9.5L basket provides great flexibility as one large cooking space big enough for 2.5kg of fries, 1.9kg of ribs, or whole chicken, but can easily be split into 3L and 6L baskets with the included divider. This allows you to cook two separate things, at different temperatures and durations, at the same time.</p><p>You can even just choose to use one of the sides only, saving on power consumption when cooking smaller portions. </p><p>The only small issue with the basket is its handles, which consist of two small protrusions on either side. It means you have to use two hands to open the drawer, and to lift and carry it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6554px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="LZiidyak24Enqn5cWLbKYX" name="5000seriesMegabasket-HandsOn-08" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/LZiidyak24Enqn5cWLbKYX-1920-80.jpg" mos="" align="middle" fullscreen="" width="6554" height="3687" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When the basket is fully loaded with food, it’s heavy so you’ll be using two hands anyway, but for times when you want to quickly check on cooking progress, you can’t open it with just one.</p><p>The additional height of this air fryer is down to the inclusion of Philips’ clever steam function, giving you more ways to cook from a single machine. You can steam food in this air fryer, as well as 'Steamfry', which combines both cooking methods.</p><p>What this means is you’ll need to consider where you want the air fryer to go, and whether you have suitable space for this 496mm x 329mm x 355mm model to fit - especially if you have low-hung wall cabinets over your worktops.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7387px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="H2yt97ECx6JHtutyEQb4dX" name="5000seriesMegabasket-HandsOn-15" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/H2yt97ECx6JHtutyEQb4dX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7387" height="4155" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Hot air vents from the rear of the machine, so you need to leave space between it and the wall, and when using the steam function water vapor will also rise from the back of the machine.</p><p>The one meter power cable will be long enough for most kitchen setups, and the Philips 5000 Series comes with a clip-on cable tidy for the rear to keep things neat if you like to store your air fryer in a cupboard when not in use. Although, it’ll need to be a sizable cupboard.</p><p>A nice inclusion in the box was a set of tongs, a particularly useful addition when cooking with an air fryer, as it makes tossing food and removing it from the basket much easier.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7002px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="2V9XjHVGUVP2JhmTuhQDTX" name="5000seriesMegabasket-HandsOn-10" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/2V9XjHVGUVP2JhmTuhQDTX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7002" height="3939" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There’s also a paper manual in the box that covers all the basics, mainly via pictorial guides, but for those who want a more detailed breakdown of functionality you’ll need to download the free HomeID app on your phone.</p><p>What isn’t made obvious out of the box is the need to run the air fryer empty initially to burn off the protective shipping coating.</p><p>Diving into the app deeper, Philips advises to wash the basket and accessories with a soft sponge, water and washing up liquid, dry them, and then run the air fryer empty, a 200C, for the maximum cook time (which for this model is 180 minutes).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7859px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G87smvyGf7zVdnvbj2s7PX" name="5000seriesMegabasket-HandsOn-11" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/G87smvyGf7zVdnvbj2s7PX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7859" height="4421" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That seemed excessive to me. I did an initial four minute cycle at 180C, allowed the basket to cool down, and then washed it, the divider, and the crisp trays, and set the machine at 200C for 50 minutes. The smell did get very strong during this time, but it did the trick.</p><p>When I came to cook with the air fryer for the first time, there was a slight smell during cooking, but it didn’t transfer to the food.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6437px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L24Pua7RJApqpm6V2Ni2HX" name="5000seriesMegabasket-HandsOn-04" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/L24Pua7RJApqpm6V2Ni2HX-1920-80.jpg" mos="" align="middle" fullscreen="" width="6437" height="3621" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The controls here are excellent, just as they are on the <a href="https://www.techradar.com/home/air-fryers/philips-4000-series-stacked-dual-basket-airfryer-review">Philips 4000 Series Stacked Dual Basket Air Fryer</a>. The illuminated touch buttons on the top of the machine make it really easy to select the basket size you wish to cook with, and to set the temperature and time. </p><p>The only slight negative against this design is the glossy black surface quickly gets dirty, and shows up finger smudges. Plus, if your hands aren’t clean it can sometimes struggle to pick up your presses.</p><p>There are a number of presets to pick from too (frozen fries, mixed vegetables, chicken drumsticks, tray bakes, fish, dumplings, reheat), if you want to just press and play. </p><p>While the presets are useful, I did find during my weeks of testing they sometimes needed to be fine tuned to my preferred cook level. It’s all part of the early trial and error of using a new air fryer to work out the times and temps that work best for the food you’re cooking regularly. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6373px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AZxBuGVT6bvuSBP3htetWX" name="5000seriesMegabasket-HandsOn-12" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/AZxBuGVT6bvuSBP3htetWX-1920-80.jpg" mos="" align="middle" fullscreen="" width="6373" height="3585" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When it comes to cleaning, the good news is the basket, trays and divider are all dishwasher safe. If you don’t have access to one, hand washing also works - although the sheer size of the basket means it can be tricky to clean in smaller sinks.</p><p>Another nice feature is the steam cleaning function. Simple to enact - just make sure the water reservoir is full and select the steam clean mode - it does a good job of loosening grease and marks in the basket. It means you can just run a cloth or paper towel round the basket and it’s pretty much clean. No need for hard scrubbing. It’s not going to remove stubborn marks or pieces of food debris, but it’s a handy option when only lightly used.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-performance"><span>Philips 5000 Series Megabasket with Steam Air Fryer: performance</span></h3><h2 id="performance">Performance</h2><ul><li><strong>Steam and SteamFry functions are excellent</strong></li><li><strong>Quiet operation</strong></li><li><strong>Great all-round cooking performance</strong></li></ul><p>The Philips 5000 Series Megabasket with Steam Air Fryer is one of the quieter models I’ve tested, making it an excellent cooking companion, especially in smaller kitchens as the noise doesn’t dominate the room.</p><p>As well as the presets, there are a couple of other useful features here. First is the shake reminder, where the 5000 Series will work out how many shake intervals are required based on the cook duration you’ve set, and will beep at set times to alert you to the fact you need to shake or turn the food in the basket.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jQzBetWj4Hn9BiMrCKduTH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dyR6s9MM5zEHBtThe9HwQH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/swAVw75jewaQGT7mvECPJH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>This allows you to ensure an even cook, be it fries, chicken wings, vegetables, or pretty much anything else you’re cooking. If you’re not using a preset, you will need to manually enable the shake reminder by pressing the icon on the control panel.</p><p>The second handy feature is sync, allowing you to utilize the dual basket setup, and cook two different foods, at different temperatures, for different lengths of time, but have them finish at the same time. </p><p>The air fryer delays the start of the side with the shorter cook time, starting it when its duration matches that left on the other side. It’s simple to set up, and works really nicely.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/W8TaSADVhLi42vgLxUNWTH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/m9ZGkRZ5YMWz8jrjFa4HWH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VGEn36r9Pi86C8sjTS4kRH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The 5000 Series Megabasket is certainly well equipped, but how does it actually perform when it comes to cooking food? </p><p>As this is a large basket air fryer, and given my penchant for consuming pizza, I decided to kick things off with a simple, store-bought margarita. When I reviewed the Tower Elite 11 Litre Flexi Drawer, I was able to fit a whole round (admittedly small) pizza into the basket.</p><p>With the Philips, the basket isn’t as deep, which meant I had to slice my circular pizza in half and lay the two halves at an angle in the basket. It worked fine, but if this pizza was frozen rather than fresh, I would be forced to use the oven.</p><p>After warming up the air fryer for a couple of minutes first, I cooked the pizza at 190C for nine minutes. It turned out this was a minute or so too long, as the topping came out a little overdone. It was still fine to eat, but a glass window on the basket would have allowed me to keep a better eye on the progress being made. Alas, there’s no window on the basket.</p><p>I returned a few days later however with an oval shaped pizza. This easily sat in the basket, and having learned my lesson I cooked it for seven minutes at 180C. </p><p>The final cook was much better, with a crisp base and juicy toppings, although I noticed the part of the pizza towards the back of the basket was slightly more cooked than that at the front.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KK3b7Rc3QsFc9CFy89CDPH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PVZQ5gvbayHHFVkTi6gwNH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You don’t always get a completely even cook from this air fryer, but it wasn’t a problem during the weeks of cooking I did.</p><p>Fries came out great with this air fryer, whether they were frozen or fresh. Crispy on the outside, fluffy in the middle, and using the frozen fries setting I got automatic reminders to shake the basket a few times during the 24 minute cook at 200C.</p><p>For the fresh fries I had to set the temperature (200C) and time (21 minutes) manually, as well as enable the shake reminder. Still, the results were great.</p><p>Baking is another highlight when using the Philips 5000 air fryer, with <a href="https://www.bbcgoodfood.com/recipes/air-fryer-banana-bread">a simple banana bread recipe</a> producing a moist inside, crunchy-topped loaf with an excellent texture. I cooked it at 160C for 25 minutes, and then 20 minutes at 140C. </p><p>I also produced delicious, gooey-centered chocolate cookies, with an eight minute bake at 175C doing the job nicely. The chicken breasts, mixed green vegetables and sausages I also cooked using the air fryer mode all came out well.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jLrVW885e6Ct6KpJFBhsJG-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tjQxFAUr6qW2qotRgNWrTG-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But air frying is only part of the story. The reservoir atop this device is the signal this device has more tricks up its sleeve. The Steamfry function, that utilizes both the air frying components along with generating steam, aims to lock in moisture and enhance tenderness, creating juicy and golden textures. Basically, the best of air frying and steaming in one.</p><p>And it works really well. I used the entire basket to Streamfry large, hand-seasoned chicken wings on the chicken preset (32 minutes at 200C).</p><p>During the cook there are periods of air frying and periods of steaming, the latter of which are obvious as you can hear the steam being produced, and see it vent out the rear of the machine. If you have it up close to a wall, or under a kitchen cabinet, expect significant condensation. I’d recommend giving it plenty of breathing room when using a steam function.</p><p>The results were superb. Wonderfully crisp skin, and juicy meat made for a delicious dinner, and had me returning the next day for lunch to cook the rest of the wings I didn’t need the night before.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/esxg8iAa9iiAmJL2rQvHUH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xQH2wYBDMMr9ZAmjV4mkRH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YtARe5pC6TRno8o7ETvXAH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And when it comes to solely steaming, the 5000 Megabasket performs well yet again. Popping a selection of Japanese chicken and vegetable gyoza into the right side of the basket (steam and steamfry are available in the whole basket, or the right side only) and using the preset dumpling mode produced perfectly steamed, silky pillows.</p><p>A word of warning on the presets though, they aren’t a sure-fire win every time. When I cooked some green beans, broccoli, sugar snap peas, I split the batch between the two compartments. The veg I put in the smaller side I air fried, while I opted for steam on the larger side.</p><p>I selected the vegetables preset for both, which gave me settings of 200C for 30 minutes for the air fried veg, and 100C for 14 minutes for the steamed side. I also selected the sync option, so both sides would finish at the same time. However, at the first shake reminder for the air fried side (after 15 minutes) it was clear my veg was already overcooked.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:8160px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6HDkG43fcw2HGkqtUb4aVH" name="Burritos - Cooked" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" src="https://cdn.mos.cms.futurecdn.net/6HDkG43fcw2HGkqtUb4aVH-1920-80.jpg" mos="" align="middle" fullscreen="" width="8160" height="4590" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I completed the full cycle for both sides, and the air fried veg was cremated. Thankfully, the steamed side had cooked very well, with tender broccoli stems, beans and peas.</p><p>Put bigger, chunkier pieces of veg in the air fry side (such as roughly chopped carrots and parsnips) and the preset is closer to what you need. It’s a good reminder that you need to spend time with your air fryer in the initial weeks to find out which settings work best for the food you cook - even with premium models such as the 5000 series.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-philips-5000-series-megabasket-with-steam-air-fryer"><span>Should you buy the Philips 5000 Series Megabasket with Steam Air Fryer?</span></h3><div ><table><caption>Report card</caption><tbody><tr><td class="firstcol " ><p><strong>Attribute</strong></p></td><td  ><p><strong>Notes</strong></p></td><td  ><p><strong>Rating</strong></p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>There’s a premium price tag, but you’re getting a premium product. The 5000 Series Megabasket is packed full with features, includes a set of tongs in the box, and is well built.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>If you have the space, this is a premium air fryer with excellent controls and plenty of features. The set of tongs included in the box is a nice touch, but the handles on the basket can be a little awkward. </p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Whether you air fry, steamfry or steam, you’ll get excellent results from the 5000 series. Its easy operation and impressive versatility delivers consistently great cooks.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h3 id="buy-it-if-8">Buy it if</h3><div class="product"><p><strong>You want excellent versatility</strong></p><p>The steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a0548-a2e6-11f1-8815-0b59613a0f97" data-action="Deal Block" data-label="You want excellent versatilityThe steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box." data-dimension48="You want excellent versatilityThe steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want to feed a family</strong></p><p>The large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a05ac-a2e6-11f1-9af3-a39e421616d0" data-action="Deal Block" data-label="You want to feed a familyThe large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings." data-dimension48="You want to feed a familyThe large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want consistent, delicious results</strong></p><p>The Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a061a-a2e6-11f1-b222-8bb2cbc3c4da" data-action="Deal Block" data-label="You want consistent, delicious resultsThe Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg." data-dimension48="You want consistent, delicious resultsThe Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg." data-dimension25="">View Deal</a></p></div><h3 id="don-t-buy-it-if">Don’t buy it if</h3><div class="product"><p><strong>You’re on a budget</strong></p><p>If you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a0688-a2e6-11f1-92ff-436a44684b55" data-action="Deal Block" data-label="You’re on a budgetIf you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series." data-dimension48="You’re on a budgetIf you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re only after air frying capabilities</strong></p><p>The steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a06ec-a2e6-11f1-91d3-232e03ca1b3f" data-action="Deal Block" data-label="You’re only after air frying capabilitiesThe steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them." data-dimension48="You’re only after air frying capabilitiesThe steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re limited on counter space</strong></p><p>The Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a075a-a2e6-11f1-a9dc-a5cff779db3b" data-action="Deal Block" data-label="You’re limited on counter spaceThe Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear." data-dimension48="You’re limited on counter spaceThe Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-also-consider"><span>Philips 5000 Series Megabasket with Steam Air Fryer: also consider</span></h3><div class="product"><a data-dimension112="e41a07c8-a2e6-11f1-9203-055b943718a4" data-action="Deal Block" data-label="Ninja Foodi FlexBasket Dual Air Fryer review" data-dimension48="Ninja Foodi FlexBasket Dual Air Fryer review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="b8ABZTPpMHi5GeNoWjYiw6" name="ninja-foodi-air-fryer-8qt-dualzone-flexb-e7ba3063-4385-4abc-bd74-e33dfd15d84a.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/b8ABZTPpMHi5GeNoWjYiw6-1920-80.jpg" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja Foodi FlexBasket Dual Air Fryer</strong></p><p>An immense air fryer with one of the largest capacities on the market and the flexibility to cook in either two independent zones or convert the drawer into one tray for larger meals.</p><p>For more information, check out our full <a href="https://www.techradar.com/home/air-fryers/ninja-foodi-flexbasket-dual-air-fryer-review" data-dimension112="e41a07c8-a2e6-11f1-9203-055b943718a4" data-action="Deal Block" data-label="Ninja Foodi FlexBasket Dual Air Fryer review" data-dimension48="Ninja Foodi FlexBasket Dual Air Fryer review" data-dimension25="">Ninja Foodi FlexBasket Dual Air Fryer review</a></p></div><div class="product"><a data-dimension112="e41a082c-a2e6-11f1-8751-478b4636d69a" data-action="Deal Block" data-label="Tower Elite 11 Litre Flexi Drawer review" data-dimension48="Tower Elite 11 Litre Flexi Drawer review" 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:69.51%;"><img id="hNuUdKDePXHANHxKKpyNRZ" name="TowerElite" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hNuUdKDePXHANHxKKpyNRZ-1920-80.png" mos="" align="middle" fullscreen="" width="679" height="472" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Tower Elite 11 Litre Flexi Drawer</strong></p><p>If you’re after a big-basket air fryer on a budget, the Tower Elite 11 Litre Flexi Drawer has a larger basket than the Philips and is almost half the price. There’s no steam function here though.</p><p>For more information, check out our full <a href="https://www.techradar.com/home/air-fryers/tower-elite-11-liter-flexi-drawer-air-fryer-review" data-dimension112="e41a082c-a2e6-11f1-8751-478b4636d69a" data-action="Deal Block" data-label="Tower Elite 11 Litre Flexi Drawer review" data-dimension48="Tower Elite 11 Litre Flexi Drawer review" data-dimension25="">Tower Elite 11 Litre Flexi Drawer review</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-philips-5000-series-megabasket-with-steam-air-fryer"><span>How I tested the Philips 5000 Series Megabasket with Steam Air Fryer</span></h3><ul><li><strong>I used the Philips 5000 Series air fryer for multiple weeks in my kitchen</strong></li><li><strong>I cooked a wide variety of food with it, including fries, cakes, vegetables, pizza and meat</strong></li><li><strong>I tested the various cooking functions, and the cleaning process</strong></li></ul><p>I spent multiple weeks using the Philips 5000 Series Megabasket with Steam Air Fryer in my kitchen. During that time I cooked using the air fry, steamfry and steam settings, and used the various preset modes, along with manual setting.</p><p>I cooked a wide variety of food, including baking cakes and cookies, air frying chips, pizzas, sausages and chicken, steaming vegetables and dumplings, and steam frying chicken wings.</p><p>I also tested the steam cleaning function, and cleaned the basket, trays and divider both by hand, and with the dishwasher.</p><p><em>First reviewed August 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/air-fryers/philips-500-series-megabasket-steam-air-fryer-review</link>
                                                                            <description>
                            <![CDATA[ The Philips 5000 Series Megabasket is more than just an air fryer. With a huge cooking basket, clever steam and steamfry functions, and a premium design, could this be the ultimate countertop appliance? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">QfSEccUKmsJ4Xs8S4R3MjJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/wM8kQn8zDBqREGWSDkWgQX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 31 Aug 2026 18:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Air Fryers]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                <author><![CDATA[ johnmccannfreelance@gmail.com (John McCann) ]]></author>                    <dc:creator><![CDATA[ John McCann ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/BxknAL39z3xkmJBHEUTi2c-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;John has been a technology journalist for more than a decade, and over the years has built up a vast knowledge of the tech industry. He’s interviewed CEOs from some of the world’s biggest tech firms, visited their HQs and appeared on live TV and radio, including Sky News, BBC News, BBC World News, Al Jazeera, LBC, and BBC Radio 4.&lt;br&gt;&lt;br&gt;He’s reported on pretty much every area of consumer technology, from laptops, tablets, smartwatches and smartphones to smart speakers, automotive, headphones, and more. During his time in journalism, John has written for TechRadar, T3, Shortlist, Android Police, Digital Trends, Expert Reviews, Gizmodo, GQ, heycar, Honest John, Stuff, Tech Advisor, What Laptop. He’s also appeared in the Evening Standard and Metro newspapers.&lt;br&gt;&lt;br&gt;Outside of work, John is a passionate Watford FC and Green Bay Packers fan, enjoys a Sunday afternoon watching the F1, loves a top-quality burger or pizza, and is addicted to travel. He’s also a Guinness World Record Holder and appeared in the Olympic Opening Ceremony for the London 2012 games, dressed as one of The Beatles from the Sgt. Pepper’s album cover. He’s even got the pictures to prove it!&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/wM8kQn8zDBqREGWSDkWgQX-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter]]></media:description>                                                            <media:text><![CDATA[Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter]]></media:text>
                                <media:title type="plain"><![CDATA[Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/wM8kQn8zDBqREGWSDkWgQX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-30-second-review"><span>Philips 5000 Series Megabasket with Steam Air Fryer: 30-second review</span></h3><p>The Philips 5000 Series Megabasket with Steam Air Fryer is an air fryer and then some.</p><p>Sure it does a great job at being an air fryer, and so it should for the premium price tag it comes in at. The sizable 9.5L basket offers plenty of space for family-sized portions, while the handy divider allows you to cook two different foods, at differing durations and temperatures, simultaneously. It’s pretty par for the course these days, but the 5000 Series Megabasket is only just getting started.</p><p>Things are turned up a notch with the steam functionality Philips has built in. Being able to perfectly steam vegetables, fish and dumplings without the need for a separate appliance saves on counter and cupboard space, and the results here are just as good as the air fryer.</p><p>However, the versatility is kicked into overdrive with the streamfry function, allowing you to bring the best of both worlds to your food. The crispy finish of an air fryer combined with the moisture locking abilities of steam. The result? Some of the best chicken wings I’ve ever made. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7420px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FgnBHFc2ojEijCzGtuVLnX" name="5000seriesMegabasket-HandsOn-05" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/FgnBHFc2ojEijCzGtuVLnX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7420" height="4174" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>All this functionality not only comes at a cost to your wallet, but also your counter top. This is a wide, tall air fryer that requires plenty of space — especially when using the steam or steamfry function, as the water vapor vents from the rear.</p><p>I’m a big fan of Philips’ controls though. The touch buttons are intuitively laid out, with easily recognizable icons that require little reference to the manual to work out - that can’t be said of all air fryer brands.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7799px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MeTQvsxgeB2gNYLqXCPLtX" name="5000seriesMegabasket-HandsOn-17" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/MeTQvsxgeB2gNYLqXCPLtX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7799" height="4387" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The basket, trays and divider are dishwasher safe, and you can also use the steam function to give the appliance its own steam clean. You will need to give the top a wipe every now and then, as the glossy finish attracts grime — but it’s a minor point in what is an overwise excellent appliance.</p><p>Whether you’re looking to make cakes, cookies, sausages, chicken wings, fish, vegetables, fries, dumplings or pretty much anything else, the Philips 5000 Series Megabasket delivers consistently great results.</p><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-price-and-availability"><span>Philips 5000 Series Megabasket with Steam Air Fryer price and availability</span></h3><ul><li><strong>At £259.99 (about $350 / AU$490), it’s at the premium end of the air fryer market</strong></li><li><strong>Available in the UK, but not in the US or Australia</strong></li></ul><p>The Philips 5000 Series Megabasket with Steam Air Fryer price is £259.99 (about $350 / AU$490), putting it at the premium end of the market, and pits it against the <a href="https://www.techradar.com/home/air-fryers/ninja-foodi-flexbasket-dual-air-fryer-review">Ninja Foodi FlexBasket</a> in the larger-basket arena.</p><p>There are cheaper, big-basket air fryers on the market that also perform well, with the <a href="https://www.techradar.com/home/air-fryers/philips-1000-series-dual-basket-air-fryer-na15x-review">Philips 1000 Series Dual Basket</a> and <a href="https://www.techradar.com/home/air-fryers/tower-elite-11-liter-flexi-drawer-air-fryer-review">Tower Elite 11 Litre Flexi Drawer</a> both coming in at around half the price of the 5000 Series.</p><p>This exact model (the NA465) isn’t available in the US and Australia, with these regions instead getting <a href="https://us.home-appliances.philips/products/philips-na551-00-00">the $349.99</a> / <a href="https://www.jbhifi.com.au/products/philips-5000-series-9l-dual-basket-airfryer-xxl-steam-black">AU$499</a> 5000 Series Dual-Basket Airfryer with Steam (NA551) with two separate drawers, rather than one large one.</p><ul><li><strong>Value score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-specifications"><span>Philips 5000 Series Megabasket with Steam Air Fryer: specifications</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Review Model</p></td><td  ><p>NA465/92</p></td></tr><tr><td class="firstcol " ><p>Number of baskets</p></td><td  ><p>1</p></td></tr><tr><td class="firstcol " ><p>Number of cooking programs</p></td><td  ><p>8</p></td></tr><tr><td class="firstcol " ><p>Cooking programs</p></td><td  ><p>Frozen fries, mixed vegetables, chicken drumsticks, tray bakes, fish, dumplings, reheat, favorite</p></td></tr><tr><td class="firstcol " ><p>Extra functions</p></td><td  ><p>Steam, Steamfry, Shake reminder, SteamClean, Adjustable basket size</p></td></tr><tr><td class="firstcol " ><p>Smart control</p></td><td  ><p>No</p></td></tr><tr><td class="firstcol " ><p>Wattage</p></td><td  ><p>2750W</p></td></tr><tr><td class="firstcol " ><p>Capacity</p></td><td  ><p>9.5L</p></td></tr><tr><td class="firstcol " ><p>Temperature range</p></td><td  ><p>40-200 degrees C</p></td></tr><tr><td class="firstcol " ><p>Time range</p></td><td  ><p>1-180 minutes</p></td></tr><tr><td class="firstcol " ><p>Dimensions</p></td><td  ><p>496mm (L) x 329mm (W) x 355mm (H)</p></td></tr><tr><td class="firstcol " ><p>Dishwasher-safe</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p>8.2kg</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-design"><span>Philips 5000 Series Megabasket with Steam Air Fryer: design</span></h3><ul><li><strong>Wide and tall, but for good reason</strong></li><li><strong>Set of tongs included in the box is a nice touch</strong></li><li><strong>Touch controls are easy to understand and well laid out</strong></li></ul><p>The Philips 5000 Series Megabasket with Steam Air Fryer is big, it’s almost as if a UFO has landed on your worktop. Wide and tall, it dominates the kitchen counter — but for good reason.</p><p>The spacious 9.5L basket provides great flexibility as one large cooking space big enough for 2.5kg of fries, 1.9kg of ribs, or whole chicken, but can easily be split into 3L and 6L baskets with the included divider. This allows you to cook two separate things, at different temperatures and durations, at the same time.</p><p>You can even just choose to use one of the sides only, saving on power consumption when cooking smaller portions. </p><p>The only small issue with the basket is its handles, which consist of two small protrusions on either side. It means you have to use two hands to open the drawer, and to lift and carry it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6554px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="LZiidyak24Enqn5cWLbKYX" name="5000seriesMegabasket-HandsOn-08" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/LZiidyak24Enqn5cWLbKYX-1920-80.jpg" mos="" align="middle" fullscreen="" width="6554" height="3687" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When the basket is fully loaded with food, it’s heavy so you’ll be using two hands anyway, but for times when you want to quickly check on cooking progress, you can’t open it with just one.</p><p>The additional height of this air fryer is down to the inclusion of Philips’ clever steam function, giving you more ways to cook from a single machine. You can steam food in this air fryer, as well as 'Steamfry', which combines both cooking methods.</p><p>What this means is you’ll need to consider where you want the air fryer to go, and whether you have suitable space for this 496mm x 329mm x 355mm model to fit - especially if you have low-hung wall cabinets over your worktops.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7387px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="H2yt97ECx6JHtutyEQb4dX" name="5000seriesMegabasket-HandsOn-15" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/H2yt97ECx6JHtutyEQb4dX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7387" height="4155" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Hot air vents from the rear of the machine, so you need to leave space between it and the wall, and when using the steam function water vapor will also rise from the back of the machine.</p><p>The one meter power cable will be long enough for most kitchen setups, and the Philips 5000 Series comes with a clip-on cable tidy for the rear to keep things neat if you like to store your air fryer in a cupboard when not in use. Although, it’ll need to be a sizable cupboard.</p><p>A nice inclusion in the box was a set of tongs, a particularly useful addition when cooking with an air fryer, as it makes tossing food and removing it from the basket much easier.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7002px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="2V9XjHVGUVP2JhmTuhQDTX" name="5000seriesMegabasket-HandsOn-10" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/2V9XjHVGUVP2JhmTuhQDTX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7002" height="3939" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>There’s also a paper manual in the box that covers all the basics, mainly via pictorial guides, but for those who want a more detailed breakdown of functionality you’ll need to download the free HomeID app on your phone.</p><p>What isn’t made obvious out of the box is the need to run the air fryer empty initially to burn off the protective shipping coating.</p><p>Diving into the app deeper, Philips advises to wash the basket and accessories with a soft sponge, water and washing up liquid, dry them, and then run the air fryer empty, a 200C, for the maximum cook time (which for this model is 180 minutes).</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:7859px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G87smvyGf7zVdnvbj2s7PX" name="5000seriesMegabasket-HandsOn-11" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/G87smvyGf7zVdnvbj2s7PX-1920-80.jpg" mos="" align="middle" fullscreen="" width="7859" height="4421" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That seemed excessive to me. I did an initial four minute cycle at 180C, allowed the basket to cool down, and then washed it, the divider, and the crisp trays, and set the machine at 200C for 50 minutes. The smell did get very strong during this time, but it did the trick.</p><p>When I came to cook with the air fryer for the first time, there was a slight smell during cooking, but it didn’t transfer to the food.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6437px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L24Pua7RJApqpm6V2Ni2HX" name="5000seriesMegabasket-HandsOn-04" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/L24Pua7RJApqpm6V2Ni2HX-1920-80.jpg" mos="" align="middle" fullscreen="" width="6437" height="3621" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The controls here are excellent, just as they are on the <a href="https://www.techradar.com/home/air-fryers/philips-4000-series-stacked-dual-basket-airfryer-review">Philips 4000 Series Stacked Dual Basket Air Fryer</a>. The illuminated touch buttons on the top of the machine make it really easy to select the basket size you wish to cook with, and to set the temperature and time. </p><p>The only slight negative against this design is the glossy black surface quickly gets dirty, and shows up finger smudges. Plus, if your hands aren’t clean it can sometimes struggle to pick up your presses.</p><p>There are a number of presets to pick from too (frozen fries, mixed vegetables, chicken drumsticks, tray bakes, fish, dumplings, reheat), if you want to just press and play. </p><p>While the presets are useful, I did find during my weeks of testing they sometimes needed to be fine tuned to my preferred cook level. It’s all part of the early trial and error of using a new air fryer to work out the times and temps that work best for the food you’re cooking regularly. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6373px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="AZxBuGVT6bvuSBP3htetWX" name="5000seriesMegabasket-HandsOn-12" alt="Philips 5000 Series Megabasket with Steam Air Fryer on kitchen counter" src="https://cdn.mos.cms.futurecdn.net/AZxBuGVT6bvuSBP3htetWX-1920-80.jpg" mos="" align="middle" fullscreen="" width="6373" height="3585" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>When it comes to cleaning, the good news is the basket, trays and divider are all dishwasher safe. If you don’t have access to one, hand washing also works - although the sheer size of the basket means it can be tricky to clean in smaller sinks.</p><p>Another nice feature is the steam cleaning function. Simple to enact - just make sure the water reservoir is full and select the steam clean mode - it does a good job of loosening grease and marks in the basket. It means you can just run a cloth or paper towel round the basket and it’s pretty much clean. No need for hard scrubbing. It’s not going to remove stubborn marks or pieces of food debris, but it’s a handy option when only lightly used.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-performance"><span>Philips 5000 Series Megabasket with Steam Air Fryer: performance</span></h3><h2 id="performance">Performance</h2><ul><li><strong>Steam and SteamFry functions are excellent</strong></li><li><strong>Quiet operation</strong></li><li><strong>Great all-round cooking performance</strong></li></ul><p>The Philips 5000 Series Megabasket with Steam Air Fryer is one of the quieter models I’ve tested, making it an excellent cooking companion, especially in smaller kitchens as the noise doesn’t dominate the room.</p><p>As well as the presets, there are a couple of other useful features here. First is the shake reminder, where the 5000 Series will work out how many shake intervals are required based on the cook duration you’ve set, and will beep at set times to alert you to the fact you need to shake or turn the food in the basket.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jQzBetWj4Hn9BiMrCKduTH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dyR6s9MM5zEHBtThe9HwQH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/swAVw75jewaQGT7mvECPJH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>This allows you to ensure an even cook, be it fries, chicken wings, vegetables, or pretty much anything else you’re cooking. If you’re not using a preset, you will need to manually enable the shake reminder by pressing the icon on the control panel.</p><p>The second handy feature is sync, allowing you to utilize the dual basket setup, and cook two different foods, at different temperatures, for different lengths of time, but have them finish at the same time. </p><p>The air fryer delays the start of the side with the shorter cook time, starting it when its duration matches that left on the other side. It’s simple to set up, and works really nicely.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/W8TaSADVhLi42vgLxUNWTH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/m9ZGkRZ5YMWz8jrjFa4HWH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VGEn36r9Pi86C8sjTS4kRH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>The 5000 Series Megabasket is certainly well equipped, but how does it actually perform when it comes to cooking food? </p><p>As this is a large basket air fryer, and given my penchant for consuming pizza, I decided to kick things off with a simple, store-bought margarita. When I reviewed the Tower Elite 11 Litre Flexi Drawer, I was able to fit a whole round (admittedly small) pizza into the basket.</p><p>With the Philips, the basket isn’t as deep, which meant I had to slice my circular pizza in half and lay the two halves at an angle in the basket. It worked fine, but if this pizza was frozen rather than fresh, I would be forced to use the oven.</p><p>After warming up the air fryer for a couple of minutes first, I cooked the pizza at 190C for nine minutes. It turned out this was a minute or so too long, as the topping came out a little overdone. It was still fine to eat, but a glass window on the basket would have allowed me to keep a better eye on the progress being made. Alas, there’s no window on the basket.</p><p>I returned a few days later however with an oval shaped pizza. This easily sat in the basket, and having learned my lesson I cooked it for seven minutes at 180C. </p><p>The final cook was much better, with a crisp base and juicy toppings, although I noticed the part of the pizza towards the back of the basket was slightly more cooked than that at the front.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KK3b7Rc3QsFc9CFy89CDPH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PVZQ5gvbayHHFVkTi6gwNH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>You don’t always get a completely even cook from this air fryer, but it wasn’t a problem during the weeks of cooking I did.</p><p>Fries came out great with this air fryer, whether they were frozen or fresh. Crispy on the outside, fluffy in the middle, and using the frozen fries setting I got automatic reminders to shake the basket a few times during the 24 minute cook at 200C.</p><p>For the fresh fries I had to set the temperature (200C) and time (21 minutes) manually, as well as enable the shake reminder. Still, the results were great.</p><p>Baking is another highlight when using the Philips 5000 air fryer, with <a href="https://www.bbcgoodfood.com/recipes/air-fryer-banana-bread">a simple banana bread recipe</a> producing a moist inside, crunchy-topped loaf with an excellent texture. I cooked it at 160C for 25 minutes, and then 20 minutes at 140C. </p><p>I also produced delicious, gooey-centered chocolate cookies, with an eight minute bake at 175C doing the job nicely. The chicken breasts, mixed green vegetables and sausages I also cooked using the air fryer mode all came out well.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jLrVW885e6Ct6KpJFBhsJG-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tjQxFAUr6qW2qotRgNWrTG-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>But air frying is only part of the story. The reservoir atop this device is the signal this device has more tricks up its sleeve. The Steamfry function, that utilizes both the air frying components along with generating steam, aims to lock in moisture and enhance tenderness, creating juicy and golden textures. Basically, the best of air frying and steaming in one.</p><p>And it works really well. I used the entire basket to Streamfry large, hand-seasoned chicken wings on the chicken preset (32 minutes at 200C).</p><p>During the cook there are periods of air frying and periods of steaming, the latter of which are obvious as you can hear the steam being produced, and see it vent out the rear of the machine. If you have it up close to a wall, or under a kitchen cabinet, expect significant condensation. I’d recommend giving it plenty of breathing room when using a steam function.</p><p>The results were superb. Wonderfully crisp skin, and juicy meat made for a delicious dinner, and had me returning the next day for lunch to cook the rest of the wings I didn’t need the night before.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/esxg8iAa9iiAmJL2rQvHUH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xQH2wYBDMMr9ZAmjV4mkRH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YtARe5pC6TRno8o7ETvXAH-1920-80.jpg" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>And when it comes to solely steaming, the 5000 Megabasket performs well yet again. Popping a selection of Japanese chicken and vegetable gyoza into the right side of the basket (steam and steamfry are available in the whole basket, or the right side only) and using the preset dumpling mode produced perfectly steamed, silky pillows.</p><p>A word of warning on the presets though, they aren’t a sure-fire win every time. When I cooked some green beans, broccoli, sugar snap peas, I split the batch between the two compartments. The veg I put in the smaller side I air fried, while I opted for steam on the larger side.</p><p>I selected the vegetables preset for both, which gave me settings of 200C for 30 minutes for the air fried veg, and 100C for 14 minutes for the steamed side. I also selected the sync option, so both sides would finish at the same time. However, at the first shake reminder for the air fried side (after 15 minutes) it was clear my veg was already overcooked.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:8160px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6HDkG43fcw2HGkqtUb4aVH" name="Burritos - Cooked" alt="Food in Philips 5000 Series Megabasket Air Fryer with Steam" src="https://cdn.mos.cms.futurecdn.net/6HDkG43fcw2HGkqtUb4aVH-1920-80.jpg" mos="" align="middle" fullscreen="" width="8160" height="4590" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I completed the full cycle for both sides, and the air fried veg was cremated. Thankfully, the steamed side had cooked very well, with tender broccoli stems, beans and peas.</p><p>Put bigger, chunkier pieces of veg in the air fry side (such as roughly chopped carrots and parsnips) and the preset is closer to what you need. It’s a good reminder that you need to spend time with your air fryer in the initial weeks to find out which settings work best for the food you cook - even with premium models such as the 5000 series.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-philips-5000-series-megabasket-with-steam-air-fryer"><span>Should you buy the Philips 5000 Series Megabasket with Steam Air Fryer?</span></h3><div ><table><caption>Report card</caption><tbody><tr><td class="firstcol " ><p><strong>Attribute</strong></p></td><td  ><p><strong>Notes</strong></p></td><td  ><p><strong>Rating</strong></p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>There’s a premium price tag, but you’re getting a premium product. The 5000 Series Megabasket is packed full with features, includes a set of tongs in the box, and is well built.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>If you have the space, this is a premium air fryer with excellent controls and plenty of features. The set of tongs included in the box is a nice touch, but the handles on the basket can be a little awkward. </p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Whether you air fry, steamfry or steam, you’ll get excellent results from the 5000 series. Its easy operation and impressive versatility delivers consistently great cooks.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h3 id="buy-it-if-8">Buy it if</h3><div class="product"><p><strong>You want excellent versatility</strong></p><p>The steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a0548-a2e6-11f1-8815-0b59613a0f97" data-action="Deal Block" data-label="You want excellent versatilityThe steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box." data-dimension48="You want excellent versatilityThe steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want to feed a family</strong></p><p>The large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a05ac-a2e6-11f1-9af3-a39e421616d0" data-action="Deal Block" data-label="You want to feed a familyThe large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings." data-dimension48="You want to feed a familyThe large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You want consistent, delicious results</strong></p><p>The Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a061a-a2e6-11f1-b222-8bb2cbc3c4da" data-action="Deal Block" data-label="You want consistent, delicious resultsThe Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg." data-dimension48="You want consistent, delicious resultsThe Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg." data-dimension25="">View Deal</a></p></div><h3 id="don-t-buy-it-if">Don’t buy it if</h3><div class="product"><p><strong>You’re on a budget</strong></p><p>If you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a0688-a2e6-11f1-92ff-436a44684b55" data-action="Deal Block" data-label="You’re on a budgetIf you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series." data-dimension48="You’re on a budgetIf you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re only after air frying capabilities</strong></p><p>The steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a06ec-a2e6-11f1-91d3-232e03ca1b3f" data-action="Deal Block" data-label="You’re only after air frying capabilitiesThe steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them." data-dimension48="You’re only after air frying capabilitiesThe steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them." data-dimension25="">View Deal</a></p></div><div class="product"><p><strong>You’re limited on counter space</strong></p><p>The Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e41a075a-a2e6-11f1-a9dc-a5cff779db3b" data-action="Deal Block" data-label="You’re limited on counter spaceThe Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear." data-dimension48="You’re limited on counter spaceThe Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-philips-5000-series-megabasket-with-steam-air-fryer-also-consider"><span>Philips 5000 Series Megabasket with Steam Air Fryer: also consider</span></h3><div class="product"><a data-dimension112="e41a07c8-a2e6-11f1-9203-055b943718a4" data-action="Deal Block" data-label="Ninja Foodi FlexBasket Dual Air Fryer review" data-dimension48="Ninja Foodi FlexBasket Dual Air Fryer review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="b8ABZTPpMHi5GeNoWjYiw6" name="ninja-foodi-air-fryer-8qt-dualzone-flexb-e7ba3063-4385-4abc-bd74-e33dfd15d84a.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/b8ABZTPpMHi5GeNoWjYiw6-1920-80.jpg" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja Foodi FlexBasket Dual Air Fryer</strong></p><p>An immense air fryer with one of the largest capacities on the market and the flexibility to cook in either two independent zones or convert the drawer into one tray for larger meals.</p><p>For more information, check out our full <a href="https://www.techradar.com/home/air-fryers/ninja-foodi-flexbasket-dual-air-fryer-review" data-dimension112="e41a07c8-a2e6-11f1-9203-055b943718a4" data-action="Deal Block" data-label="Ninja Foodi FlexBasket Dual Air Fryer review" data-dimension48="Ninja Foodi FlexBasket Dual Air Fryer review" data-dimension25="">Ninja Foodi FlexBasket Dual Air Fryer review</a></p></div><div class="product"><a data-dimension112="e41a082c-a2e6-11f1-8751-478b4636d69a" data-action="Deal Block" data-label="Tower Elite 11 Litre Flexi Drawer review" data-dimension48="Tower Elite 11 Litre Flexi Drawer review" 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:69.51%;"><img id="hNuUdKDePXHANHxKKpyNRZ" name="TowerElite" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/hNuUdKDePXHANHxKKpyNRZ-1920-80.png" mos="" align="middle" fullscreen="" width="679" height="472" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Tower Elite 11 Litre Flexi Drawer</strong></p><p>If you’re after a big-basket air fryer on a budget, the Tower Elite 11 Litre Flexi Drawer has a larger basket than the Philips and is almost half the price. There’s no steam function here though.</p><p>For more information, check out our full <a href="https://www.techradar.com/home/air-fryers/tower-elite-11-liter-flexi-drawer-air-fryer-review" data-dimension112="e41a082c-a2e6-11f1-8751-478b4636d69a" data-action="Deal Block" data-label="Tower Elite 11 Litre Flexi Drawer review" data-dimension48="Tower Elite 11 Litre Flexi Drawer review" data-dimension25="">Tower Elite 11 Litre Flexi Drawer review</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-philips-5000-series-megabasket-with-steam-air-fryer"><span>How I tested the Philips 5000 Series Megabasket with Steam Air Fryer</span></h3><ul><li><strong>I used the Philips 5000 Series air fryer for multiple weeks in my kitchen</strong></li><li><strong>I cooked a wide variety of food with it, including fries, cakes, vegetables, pizza and meat</strong></li><li><strong>I tested the various cooking functions, and the cleaning process</strong></li></ul><p>I spent multiple weeks using the Philips 5000 Series Megabasket with Steam Air Fryer in my kitchen. During that time I cooked using the air fry, steamfry and steam settings, and used the various preset modes, along with manual setting.</p><p>I cooked a wide variety of food, including baking cakes and cookies, air frying chips, pizzas, sausages and chicken, steaming vegetables and dumplings, and steam frying chicken wings.</p><p>I also tested the steam cleaning function, and cleaned the basket, trays and divider both by hand, and with the dishwasher.</p><p><em>First reviewed August 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Froth your milk of choice or make matcha (and more!) with a touch of a button ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-terra-kaffe-aero-two-minute-review"><span>Terra Kaffe Aero: two-minute review</span></h3><p>The Terra Kaffe Aero does what it does well. There are four settings: Cold Foam, Hot Froth, Hot Milk, and Matcha. Just spin the dial and press it to make your selection. In just a few minutes, your beverage will be ready to drink. Cleaning it is super easy, just remove the whisk and hand-wash it, the pitcher, and the lid.</p><p>I found that all of the settings worked well. I tested each of the milk settings with skim milk which worked great. I also tested them all with a barista-style pistachio milk which came highly recommended in my research, and that also worked really well. I did try a low-calorie almond milk (not specifically made for frothing, and not recommended, but I had it in the house) and that was a fail, though I can't blame the Aero for that.</p><p>I made matcha in the Aero several different ways. Though I'm new to matcha, I thought it turned out just as yummy as the $7 matcha latte I got at my local coffee and tea shop.</p><p>Just for kicks, I also made a simple salad dressing. I just put together some olive oil and balsamic vinegar and used the Cold Foam setting. The Terra Kaffe Aero emulsified the dressing beautifully.</p><p>If you're looking for a dedicated pitcher-style frother, I don't know how you could really do better than the Terra Kaffe Aero.</p><h3 class="article-body__section" id="section-terra-kaffe-aero-price-and-availability"><span>Terra Kaffe Aero: price and availability</span></h3><ul><li><strong>Available at Amazon and on Terra Kaffe's website</strong></li><li><strong>Retails for $149.95 (£110.73 GBP/$210.85 AUD)</strong></li><li><strong>Choose Matte Black or Stainless Steel </strong></li></ul><p>The Terra Kaffe Aero milk frother is currently available on Amazon and on Terra Kaffe's own website. The retail price is $149.95 (£110.73 GBP/$210.85 AUD). It comes in two different colorways, Matte Black or Stainless Steel, though both color options refer only to the pitcher itself. The base is matte black on both models.</p><h3 class="article-body__section" id="section-terra-kaffe-aero-specs"><span>Terra Kaffe Aero: specs</span></h3><div ><table><caption>Terra Kaffe Aero specs</caption><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Terra Kaffe Aero</p></td></tr><tr><td class="firstcol " ><p>Heated temperature range</p></td><td  ><p>140°F–160°F</p></td></tr><tr><td class="firstcol " ><p>Dimensions </p></td><td  ><p>Carafe: 4.3” (H) x 3.8” (Diameter)<br />Base: 4.2” (W) x 2.4” (H) x 4.2” (Diameter)</p></td></tr><tr><td class="firstcol " ><p>Carafe material</p></td><td  ><p>Stainless steel, glass, silicone, and plastic</p></td></tr><tr><td class="firstcol " ><p>Settings</p></td><td  ><p>Cold Foam, Hot Froth, Hot Milk, Matcha</p></td></tr><tr><td class="firstcol " ><p>Volume</p></td><td  ><p>6.7 oz (Hot Froth), 13.5 oz (Hot Milk)</p></td></tr><tr><td class="firstcol " ><p>Compatible milk types</p></td><td  ><p>Dairy, oat, almond, soy, and more (ideally, choose a "Barista" style)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-terra-kaffe-aero-design"><span>Terra Kaffe Aero: design</span></h3><ul><li><strong>Attractive and simple design </strong></li><li><strong>Interchangeable whisks for milk or matcha</strong></li><li><strong>Four settings </strong></li></ul><p>The Terra Kaffe Aero is an elegantly designed multi-use milk frother. It's nice-looking and it's something you won't mind having out on your kitchen counter. </p><p>The Aero comes with two different whisks, one for milk and one for matcha. Place your whisk of choice in the bottom of the pitcher until it clicks into place. Add your liquid, the minimum and maximum fill lines are clearly printed on the inside. Place the lid on top and the pitcher on the base. Spin the dial on the base until you get to the one you want and then press it. The base is magnetized, which is how it controls the whisk from inside the pitcher. Progress lights show you how your beverage is coming along and a series of beeps let you know it's complete.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aP9qmdEbmg9fZbx7GYMSLD" name="terra-kaffe-aero-in-action" alt="Terra Kaffe Aero ready to go" src="https://cdn.mos.cms.futurecdn.net/aP9qmdEbmg9fZbx7GYMSLD-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>There is a "hidden" settings menu on the Terra Kaffe Aero. To access it, turn the dial to select the drink setting you wish to adjust. Double click the dial (press twice within .7 seconds) to enter that drink's settings menu. The selected drink will flash and the current setting will be indicated by the number of LED lights. For the Hot Milk and Matcha settings, turn the dial to adjust the temperature. For the Cold Foam and Hot Froth settings, turning the dial will adjust the amount of froth.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-terra-kaffe-aero-performance"><span>Terra Kaffe Aero: performance</span></h3><ul><li><strong>Couldn't be easier to use</strong></li><li><strong>Takes just over three minutes</strong></li><li><strong>Beautiful foam from both dairy and plant milk</strong></li></ul><p>I put the Terra Kaffe Aero through its paces, and overall I think it did a great job. The foams held up nicely, even after stirring. I tested each of the settings, Cold Foam, Hot Froth, Hot Milk, and Matcha several times. I tried out both dairy milk and plant milk, and learned some things along the way.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="D7k6vtCWe7dC8Z2AB2ejFG" name="terra-kaffe-aero-milk-comparison" alt="Terra Kaffe Aero with dairy and plant milk hot froth" src="https://cdn.mos.cms.futurecdn.net/D7k6vtCWe7dC8Z2AB2ejFG-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h2 id="hot-froth-dairy-milk">Hot froth (dairy milk)</h2><p>I prefer skim milk, so that's what I used. A dairy milk with a bit of fat in it will likely foam up even better, but I was happy with the results I got using skim. Surprisingly, whole milk and cream are not the best milks for frothing, as they have too much fat. Two percent is the ideal frothing milk.</p><p>I started with the Hot Froth setting, pouring in skim milk up to the minimum fill line. I thought the foam was just lovely, as you can see in my series of photos below. The foam held up fine to stirring.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vETZqhsz4r7m8McRtuhtS-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ENjgnxhx56mqHDiuH5ydP-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mZqE5SW6ci7PdcUyZXizX-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZibNpch3xkmpX5C5jABT8-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Mdyik6BGzcWbhEA4PqGwJ-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ALP3y8Ffx3YnZWvBQuyjU-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wdHr26gXpyqRUKrYpM4jp-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-foam-dairy-milk">Cold foam (dairy milk)</h2><p>The Cold Foam setting with skim milk also came out great. It's perfect for iced coffee and other cold beverages.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KB992GYG4agRkof5FnpVKL-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/coyBVAd3Vthnsi2ZAevM3L-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mSqnTvCeqmVdzzVHUMzS6L-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MJaXxcstCjZ4ANzzvPfdJL-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="hot-milk-dairy-milk">Hot milk (dairy milk)</h2><p>The Hot Milk setting with skim milk turned out fine, though it perhaps produced more foam than I was expecting. If you hate foam and just want the milk hot, you're better off using a different method of heating your milk. If you don't mind a bit of foam, this will work for you.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CKMGv56cUEyJ88JcArtk7i-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8EeH2WypTHRVmqNn9CBYCi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EY9S6bevpAwRU2oJCjfVEi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/w7DzrNu8DkPDiXnahfk6Gi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Dyo36R6HYV22p6G9kaLwXi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T2nerqnj48vBvcrWPsJJBi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="plant-based-milks">Plant-based milks</h2><p>First I tried frothing a random low-calorie almond milk I had in the house. Don't bother with this. After that complete fail, I did some research about the best plant-based milks for frothing, and the one I had just tried was at the bottom of the barrel. </p><p>There are a few exceptions, but the easiest way to choose a plant milk that will froth properly is to pick one that says "barista" right on the label. The barista milks are made for frothing and they have enough fat (or gums or other additives) to do so. I chose a barista-labeled pistachio milk without gums but with a good amount of fat in it. I picked this one for its mild, milky flavor, but you could also use other nut milks or soy, oat, or pea milk. As long as it says barista on the label, you're good to go. If you can't find one with the barista labeling, at least look for a full-fat plant milk. Oat and soy are supposed to be particularly good for this.</p><p>I used the barista-style plant milk to make both hot froth and cold foam several times. It worked really well, in fact it was just about the same as the dairy milk.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yiTf3m9XX66FkSYSMUk4kB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CjFGAqHhjRqn7fBuNFFAzB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AJ6HioUpLrwt8DbuLy6xmB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/y5yJwqPePEzeaXK64yCxkB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fnS5ugu2nBiS2kVLqzmi5C-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JW4PHP9ixWY8eSZ65tJdsB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kvhiZMdSeyXu7JVnNshexB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SbwuFVQvHfUm6t9QnCBjzB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WuNHGPVuq3DekX7h2GCXqB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4jz4E2F34nwivLEM7xMN3C-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/c4wvnEmdHba2DkELUEZshB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JQmynYnSu2np5FdjQNQRdB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="matcha">Matcha</h2><p>I had never actually had matcha before, so my son suggested that I try one a coffee/tea shop before reviewing the Terra Kaffe Aero. That way I'd know what it's "supposed" to taste like before making it myself. I did so and was pleasantly surprised to find that I liked it. I don't really like green tea or even black tea all that much, but matcha has more of a mild taste in my opinion.</p><p>Matcha is traditionally made with a fair amount of equipment, including a sieve and a bamboo whisk. Enthusiasts will also use a scale to measure out the amount of matcha powder and water with precision.</p><p>I made matcha in the Terra Kaffe Aero a bunch of times, using instructions I found online specifically for using a milk frother as opposed to using all of the "proper" equipment. I purchased some ceremonial-grade (which is a higher grade than culinary) matcha powder, which came with a measuring scoop. I used that for measuring the powder rather than a scale. I did not sift the powder through a sieve, though my results might have been better if I had: I usually had a bit of powder at the bottom of my cup.</p><p>At any rate, I found two different basic recommended methods in my research: make the matcha in water and then add milk, or make the matcha directly in the milk. I found I preferred the former method, because the latter resulted in a too-milky beverage for my taste. However, both methods worked just fine in the Terra Kaffe Auto. </p><p>I will note that I did get a bit of powder left at the bottom of my matcha drinks. So it's not a perfect system, but it's a heck of a lot easier than doing it the traditional way.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KhLSHkrXusX7oofXsttfuk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/inEAyEDgD3oVnqAwcFwhYk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/G3fu4JEgweABnK7F2Mfrmk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3vQqYJD4ZHriEmH4Mpzkqk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/R8fV3mFFtYE75TmpBpEXwk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TKMeb2CgJL9b2MtazQs4ak-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wg6bk9JHyVuSkcnMLmQgdk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HEBfNMiuuyKn9TgKZfqWek-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WWxMgr9NgnYS3WzKJdWVdk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Xm5hM9wFraEKT3QBRSA7gk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4yoREqUaBFuVUmKGZpa92m-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HXtrRSSvfxGZQR9pkQgTtk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vMWrmrMiPo7iCgJviAQebk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="and-more">And more</h2><p>Just for fun, I decided to make a simple salad dressing. I don't know about you, but I hate salad dressings where the oil and vinegar elements are separated. I prefer my dressings totally emulsified. So, I poured a bit of olive oil and balsamic vinegar into the Aero and started the Cold Foam cycle. Not that I was looking for foam, but I definitely didn't want it hot. The results: a perfectly emulsified and delicious salad dressing. There was a tiny bit of foam but it disappeared when I poured it onto my salad.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HwxxQyFhjGHRnhSRaWxxib-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LDisiDy7qE8Ski62XyGNMb-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uAW4PiXcyFUZWdGg9gGuab-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GfHoPGjHU83nrgiGsJLwdb-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7DYhvPHcJYBPBeLDjTypAc-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-terra-kaffe-aero"><span>Should you buy the Terra Kaffe Aero?</span></h3><div ><table><caption>Terra Kaffe Aero score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>It's probably better than a hand-held battery-operated whisk, but it's also far more expensive</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design </p></td><td  ><p>The Aero is aesthetically pleasing and cleverly designed.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>It performed well with both plant and dairy milk, matcha, and more.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-9">Buy it if</h2><div class="product"><p><strong>You want a one-touch frother</strong></p><p>You don't want to put in the extra effort to froth your milk with a frothing wand or hand frother. Just dial and press.</p></div><div class="product"><p><strong>You want to make matcha without all the accoutrements </strong></p><p>No need to buy (and often replace) a bamboo whisk and the other matcha tools. Just scoop your matcha powder into water or milk, select the Matcha setting, and press.</p></div><div class="product"><p><strong>You want something attractive you can leave on the counter</strong></p><p>Beautify your coffee station at home with the Terra Kaffe Aero. You won't want to hide it away.</p></div><h2 id="don-39-t-buy-it-if-8">Don't buy it if</h2><div class="product"><p><strong>It's out of budget</strong></p><p>You're paying for the convenience, functionality, and aesthetics here. While a hand-held battery-operated whisk frother is a bit more hit-or-miss, it's exponentially cheaper.</p></div><div class="product"><p><strong>You're a matcha-making expert</strong></p><p>If you already have the whole matcha setup at home and the routine (or should I say ritual) down pat, the Aero version of matcha may not do it for you.</p></div><div class="product"><p><strong>You just don't want another appliance</strong></p><p>While this isn't a large machine, it is another appliance you'll need to devote space (and an outlet) to in your kitchen.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="ec3a8b46-9b0a-11f1-bb8b-1d43cbe98c0a" data-action="Deal Block" data-label="You just don't want another applianceWhile this isn't a large machine, it is another appliance you'll need to devote space (and an outlet) to in your kitchen." data-dimension48="You just don't want another applianceWhile this isn't a large machine, it is another appliance you'll need to devote space (and an outlet) to in your kitchen." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-terra-kaffe-aero-also-consider"><span>Terra Kaffe Aero: also consider</span></h3><div class="product"><a data-dimension112="ec3a8ca4-9b0a-11f1-8d7f-bdd79c6b2ff8" data-action="Deal Block" data-label="Read our Smeg Mini Milk Frother review" data-dimension48="Read our Smeg Mini Milk Frother review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1136px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="EQKQffUEvCGsav7Ygjf4Z3" name="smeg-mini-milk-frother-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EQKQffUEvCGsav7Ygjf4Z3-1920-80.png" mos="" align="middle" fullscreen="" width="1136" height="1136" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Smeg Mini Milk Frother</strong></p><p>This little beauty come in a number of colors. It makes hot froth, cold foam, and hot milk. It does take up less space on the counter than the Terra Kaffe Aero.</p><p><strong>Read our </strong><a href="https://www.techradar.com/home/coffee-machines/smeg-mini-milk-frother-review" data-dimension112="ec3a8ca4-9b0a-11f1-8d7f-bdd79c6b2ff8" data-action="Deal Block" data-label="Read our Smeg Mini Milk Frother review" data-dimension48="Read our Smeg Mini Milk Frother review" data-dimension25=""><strong>Smeg Mini Milk Frother review</strong></a><strong> </strong></p></div><div class="product"><a data-dimension112="ec3a8d08-9b0a-11f1-883c-f1755b108435" data-action="Deal Block" data-label="Check out our Philips Baristina Milk Frother review" data-dimension48="Check out our Philips Baristina Milk Frother review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1106px;"><p class="vanilla-image-block" style="padding-top:105.06%;"><img id="h4cTPTJvHC4YuxUZPz9oDa" name="philips-baristina-milk-frother-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/h4cTPTJvHC4YuxUZPz9oDa-1920-80.png" mos="" align="middle" fullscreen="" width="1106" height="1162" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Philips Baristina Milk Frother</strong></p><p>It's a bit cheaper and smaller than the Terra Kaffe Aero. It makes hot milk, hot foam, and cold foam. Choose from two colors, black or white.</p><p><strong>Check out our </strong><a href="https://www.techradar.com/home/coffee-machines/philips-baristina-milk-frother-review" data-dimension112="ec3a8d08-9b0a-11f1-883c-f1755b108435" data-action="Deal Block" data-label="Check out our Philips Baristina Milk Frother review" data-dimension48="Check out our Philips Baristina Milk Frother review" data-dimension25=""><strong>Philips Baristina Milk Frother review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="ec3a8d08-9b0a-11f1-883c-f1755b108435" data-action="Deal Block" data-label="Check out our Philips Baristina Milk Frother review" data-dimension48="Check out our Philips Baristina Milk Frother review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-terra-kaffe-aero"><span>How I tested the Terra Kaffe Aero</span></h3><p>I tested all of the settings: Hot Froth, Hot Milk, Cold Foam, and Matcha multiple times. I tested skim dairy milk and two different plant-based milks. I made matcha in water and tried it straight, added frothed milk to it, and made the matcha directly in milk. I tested it both hot and iced. I also made a simple salad dressing on the Cold Foam setting.</p><p><em>First reviewed August 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/small-appliances/terra-kaffe-aero-review</link>
                                                                            <description>
                            <![CDATA[ The Terra Kaffe Aero froths dairy milk, plant-based milk, matcha, and more with the touch of a button. Four options include hot froth, hot milk, cold foam, and a dedicated matcha setting. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">VpVoV49AJJsD2q5ZhqSF4k</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vjVvzwiYFa64Xg3JENnT4b-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 30 Aug 2026 10:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Coffee Machines]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Karen Freeman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DDiERCZA8XFtW9uHdwjzpL-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Karen is a world traveler, writer, teacher, family woman, and occasionally a movie extra. She has been writing about Apple, consumer tech, and lifestyle products since 2010 for various publications including TechRadar, CNET, Tom’s Guide, iMore, Macworld, AppAdvice, and WatchAware.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vjVvzwiYFa64Xg3JENnT4b-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Terra Kaffe Aero milk frother on kitchen counter with milk and matcha powder]]></media:description>                                                            <media:text><![CDATA[Terra Kaffe Aero milk frother on kitchen counter with milk and matcha powder]]></media:text>
                                <media:title type="plain"><![CDATA[Terra Kaffe Aero milk frother on kitchen counter with milk and matcha powder]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vjVvzwiYFa64Xg3JENnT4b-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-terra-kaffe-aero-two-minute-review"><span>Terra Kaffe Aero: two-minute review</span></h3><p>The Terra Kaffe Aero does what it does well. There are four settings: Cold Foam, Hot Froth, Hot Milk, and Matcha. Just spin the dial and press it to make your selection. In just a few minutes, your beverage will be ready to drink. Cleaning it is super easy, just remove the whisk and hand-wash it, the pitcher, and the lid.</p><p>I found that all of the settings worked well. I tested each of the milk settings with skim milk which worked great. I also tested them all with a barista-style pistachio milk which came highly recommended in my research, and that also worked really well. I did try a low-calorie almond milk (not specifically made for frothing, and not recommended, but I had it in the house) and that was a fail, though I can't blame the Aero for that.</p><p>I made matcha in the Aero several different ways. Though I'm new to matcha, I thought it turned out just as yummy as the $7 matcha latte I got at my local coffee and tea shop.</p><p>Just for kicks, I also made a simple salad dressing. I just put together some olive oil and balsamic vinegar and used the Cold Foam setting. The Terra Kaffe Aero emulsified the dressing beautifully.</p><p>If you're looking for a dedicated pitcher-style frother, I don't know how you could really do better than the Terra Kaffe Aero.</p><h3 class="article-body__section" id="section-terra-kaffe-aero-price-and-availability"><span>Terra Kaffe Aero: price and availability</span></h3><ul><li><strong>Available at Amazon and on Terra Kaffe's website</strong></li><li><strong>Retails for $149.95 (£110.73 GBP/$210.85 AUD)</strong></li><li><strong>Choose Matte Black or Stainless Steel </strong></li></ul><p>The Terra Kaffe Aero milk frother is currently available on Amazon and on Terra Kaffe's own website. The retail price is $149.95 (£110.73 GBP/$210.85 AUD). It comes in two different colorways, Matte Black or Stainless Steel, though both color options refer only to the pitcher itself. The base is matte black on both models.</p><h3 class="article-body__section" id="section-terra-kaffe-aero-specs"><span>Terra Kaffe Aero: specs</span></h3><div ><table><caption>Terra Kaffe Aero specs</caption><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Terra Kaffe Aero</p></td></tr><tr><td class="firstcol " ><p>Heated temperature range</p></td><td  ><p>140°F–160°F</p></td></tr><tr><td class="firstcol " ><p>Dimensions </p></td><td  ><p>Carafe: 4.3” (H) x 3.8” (Diameter)<br />Base: 4.2” (W) x 2.4” (H) x 4.2” (Diameter)</p></td></tr><tr><td class="firstcol " ><p>Carafe material</p></td><td  ><p>Stainless steel, glass, silicone, and plastic</p></td></tr><tr><td class="firstcol " ><p>Settings</p></td><td  ><p>Cold Foam, Hot Froth, Hot Milk, Matcha</p></td></tr><tr><td class="firstcol " ><p>Volume</p></td><td  ><p>6.7 oz (Hot Froth), 13.5 oz (Hot Milk)</p></td></tr><tr><td class="firstcol " ><p>Compatible milk types</p></td><td  ><p>Dairy, oat, almond, soy, and more (ideally, choose a "Barista" style)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-terra-kaffe-aero-design"><span>Terra Kaffe Aero: design</span></h3><ul><li><strong>Attractive and simple design </strong></li><li><strong>Interchangeable whisks for milk or matcha</strong></li><li><strong>Four settings </strong></li></ul><p>The Terra Kaffe Aero is an elegantly designed multi-use milk frother. It's nice-looking and it's something you won't mind having out on your kitchen counter. </p><p>The Aero comes with two different whisks, one for milk and one for matcha. Place your whisk of choice in the bottom of the pitcher until it clicks into place. Add your liquid, the minimum and maximum fill lines are clearly printed on the inside. Place the lid on top and the pitcher on the base. Spin the dial on the base until you get to the one you want and then press it. The base is magnetized, which is how it controls the whisk from inside the pitcher. Progress lights show you how your beverage is coming along and a series of beeps let you know it's complete.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aP9qmdEbmg9fZbx7GYMSLD" name="terra-kaffe-aero-in-action" alt="Terra Kaffe Aero ready to go" src="https://cdn.mos.cms.futurecdn.net/aP9qmdEbmg9fZbx7GYMSLD-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>There is a "hidden" settings menu on the Terra Kaffe Aero. To access it, turn the dial to select the drink setting you wish to adjust. Double click the dial (press twice within .7 seconds) to enter that drink's settings menu. The selected drink will flash and the current setting will be indicated by the number of LED lights. For the Hot Milk and Matcha settings, turn the dial to adjust the temperature. For the Cold Foam and Hot Froth settings, turning the dial will adjust the amount of froth.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-terra-kaffe-aero-performance"><span>Terra Kaffe Aero: performance</span></h3><ul><li><strong>Couldn't be easier to use</strong></li><li><strong>Takes just over three minutes</strong></li><li><strong>Beautiful foam from both dairy and plant milk</strong></li></ul><p>I put the Terra Kaffe Aero through its paces, and overall I think it did a great job. The foams held up nicely, even after stirring. I tested each of the settings, Cold Foam, Hot Froth, Hot Milk, and Matcha several times. I tried out both dairy milk and plant milk, and learned some things along the way.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="D7k6vtCWe7dC8Z2AB2ejFG" name="terra-kaffe-aero-milk-comparison" alt="Terra Kaffe Aero with dairy and plant milk hot froth" src="https://cdn.mos.cms.futurecdn.net/D7k6vtCWe7dC8Z2AB2ejFG-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h2 id="hot-froth-dairy-milk">Hot froth (dairy milk)</h2><p>I prefer skim milk, so that's what I used. A dairy milk with a bit of fat in it will likely foam up even better, but I was happy with the results I got using skim. Surprisingly, whole milk and cream are not the best milks for frothing, as they have too much fat. Two percent is the ideal frothing milk.</p><p>I started with the Hot Froth setting, pouring in skim milk up to the minimum fill line. I thought the foam was just lovely, as you can see in my series of photos below. The foam held up fine to stirring.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/vETZqhsz4r7m8McRtuhtS-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ENjgnxhx56mqHDiuH5ydP-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mZqE5SW6ci7PdcUyZXizX-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ZibNpch3xkmpX5C5jABT8-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Mdyik6BGzcWbhEA4PqGwJ-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/ALP3y8Ffx3YnZWvBQuyjU-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wdHr26gXpyqRUKrYpM4jp-1920-80.jpg" alt="Terra Kaffe Aero hot froth setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="cold-foam-dairy-milk">Cold foam (dairy milk)</h2><p>The Cold Foam setting with skim milk also came out great. It's perfect for iced coffee and other cold beverages.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KB992GYG4agRkof5FnpVKL-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/coyBVAd3Vthnsi2ZAevM3L-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mSqnTvCeqmVdzzVHUMzS6L-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/MJaXxcstCjZ4ANzzvPfdJL-1920-80.jpg" alt="Terra Kaffe Aero cold foam setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="hot-milk-dairy-milk">Hot milk (dairy milk)</h2><p>The Hot Milk setting with skim milk turned out fine, though it perhaps produced more foam than I was expecting. If you hate foam and just want the milk hot, you're better off using a different method of heating your milk. If you don't mind a bit of foam, this will work for you.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CKMGv56cUEyJ88JcArtk7i-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8EeH2WypTHRVmqNn9CBYCi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/EY9S6bevpAwRU2oJCjfVEi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/w7DzrNu8DkPDiXnahfk6Gi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Dyo36R6HYV22p6G9kaLwXi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T2nerqnj48vBvcrWPsJJBi-1920-80.jpg" alt="Terra Kaffe Aero hot milk setting" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="plant-based-milks">Plant-based milks</h2><p>First I tried frothing a random low-calorie almond milk I had in the house. Don't bother with this. After that complete fail, I did some research about the best plant-based milks for frothing, and the one I had just tried was at the bottom of the barrel. </p><p>There are a few exceptions, but the easiest way to choose a plant milk that will froth properly is to pick one that says "barista" right on the label. The barista milks are made for frothing and they have enough fat (or gums or other additives) to do so. I chose a barista-labeled pistachio milk without gums but with a good amount of fat in it. I picked this one for its mild, milky flavor, but you could also use other nut milks or soy, oat, or pea milk. As long as it says barista on the label, you're good to go. If you can't find one with the barista labeling, at least look for a full-fat plant milk. Oat and soy are supposed to be particularly good for this.</p><p>I used the barista-style plant milk to make both hot froth and cold foam several times. It worked really well, in fact it was just about the same as the dairy milk.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yiTf3m9XX66FkSYSMUk4kB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CjFGAqHhjRqn7fBuNFFAzB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AJ6HioUpLrwt8DbuLy6xmB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/y5yJwqPePEzeaXK64yCxkB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/fnS5ugu2nBiS2kVLqzmi5C-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JW4PHP9ixWY8eSZ65tJdsB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kvhiZMdSeyXu7JVnNshexB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SbwuFVQvHfUm6t9QnCBjzB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WuNHGPVuq3DekX7h2GCXqB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4jz4E2F34nwivLEM7xMN3C-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/c4wvnEmdHba2DkELUEZshB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JQmynYnSu2np5FdjQNQRdB-1920-80.jpg" alt="Terra Kaffe Aero with plant based milk" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="matcha">Matcha</h2><p>I had never actually had matcha before, so my son suggested that I try one a coffee/tea shop before reviewing the Terra Kaffe Aero. That way I'd know what it's "supposed" to taste like before making it myself. I did so and was pleasantly surprised to find that I liked it. I don't really like green tea or even black tea all that much, but matcha has more of a mild taste in my opinion.</p><p>Matcha is traditionally made with a fair amount of equipment, including a sieve and a bamboo whisk. Enthusiasts will also use a scale to measure out the amount of matcha powder and water with precision.</p><p>I made matcha in the Terra Kaffe Aero a bunch of times, using instructions I found online specifically for using a milk frother as opposed to using all of the "proper" equipment. I purchased some ceremonial-grade (which is a higher grade than culinary) matcha powder, which came with a measuring scoop. I used that for measuring the powder rather than a scale. I did not sift the powder through a sieve, though my results might have been better if I had: I usually had a bit of powder at the bottom of my cup.</p><p>At any rate, I found two different basic recommended methods in my research: make the matcha in water and then add milk, or make the matcha directly in the milk. I found I preferred the former method, because the latter resulted in a too-milky beverage for my taste. However, both methods worked just fine in the Terra Kaffe Auto. </p><p>I will note that I did get a bit of powder left at the bottom of my matcha drinks. So it's not a perfect system, but it's a heck of a lot easier than doing it the traditional way.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KhLSHkrXusX7oofXsttfuk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/inEAyEDgD3oVnqAwcFwhYk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/G3fu4JEgweABnK7F2Mfrmk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3vQqYJD4ZHriEmH4Mpzkqk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/R8fV3mFFtYE75TmpBpEXwk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/TKMeb2CgJL9b2MtazQs4ak-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Wg6bk9JHyVuSkcnMLmQgdk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HEBfNMiuuyKn9TgKZfqWek-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/WWxMgr9NgnYS3WzKJdWVdk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Xm5hM9wFraEKT3QBRSA7gk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4yoREqUaBFuVUmKGZpa92m-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/HXtrRSSvfxGZQR9pkQgTtk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vMWrmrMiPo7iCgJviAQebk-1920-80.jpg" alt="Terra Kaffe Aero making matcha" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="and-more">And more</h2><p>Just for fun, I decided to make a simple salad dressing. I don't know about you, but I hate salad dressings where the oil and vinegar elements are separated. I prefer my dressings totally emulsified. So, I poured a bit of olive oil and balsamic vinegar into the Aero and started the Cold Foam cycle. Not that I was looking for foam, but I definitely didn't want it hot. The results: a perfectly emulsified and delicious salad dressing. There was a tiny bit of foam but it disappeared when I poured it onto my salad.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/HwxxQyFhjGHRnhSRaWxxib-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LDisiDy7qE8Ski62XyGNMb-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uAW4PiXcyFUZWdGg9gGuab-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GfHoPGjHU83nrgiGsJLwdb-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/7DYhvPHcJYBPBeLDjTypAc-1920-80.jpg" alt="Terra Kaffe Aero making salad dressing" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-terra-kaffe-aero"><span>Should you buy the Terra Kaffe Aero?</span></h3><div ><table><caption>Terra Kaffe Aero score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>It's probably better than a hand-held battery-operated whisk, but it's also far more expensive</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design </p></td><td  ><p>The Aero is aesthetically pleasing and cleverly designed.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>It performed well with both plant and dairy milk, matcha, and more.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-9">Buy it if</h2><div class="product"><p><strong>You want a one-touch frother</strong></p><p>You don't want to put in the extra effort to froth your milk with a frothing wand or hand frother. Just dial and press.</p></div><div class="product"><p><strong>You want to make matcha without all the accoutrements </strong></p><p>No need to buy (and often replace) a bamboo whisk and the other matcha tools. Just scoop your matcha powder into water or milk, select the Matcha setting, and press.</p></div><div class="product"><p><strong>You want something attractive you can leave on the counter</strong></p><p>Beautify your coffee station at home with the Terra Kaffe Aero. You won't want to hide it away.</p></div><h2 id="don-39-t-buy-it-if-8">Don't buy it if</h2><div class="product"><p><strong>It's out of budget</strong></p><p>You're paying for the convenience, functionality, and aesthetics here. While a hand-held battery-operated whisk frother is a bit more hit-or-miss, it's exponentially cheaper.</p></div><div class="product"><p><strong>You're a matcha-making expert</strong></p><p>If you already have the whole matcha setup at home and the routine (or should I say ritual) down pat, the Aero version of matcha may not do it for you.</p></div><div class="product"><p><strong>You just don't want another appliance</strong></p><p>While this isn't a large machine, it is another appliance you'll need to devote space (and an outlet) to in your kitchen.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="ec3a8b46-9b0a-11f1-bb8b-1d43cbe98c0a" data-action="Deal Block" data-label="You just don't want another applianceWhile this isn't a large machine, it is another appliance you'll need to devote space (and an outlet) to in your kitchen." data-dimension48="You just don't want another applianceWhile this isn't a large machine, it is another appliance you'll need to devote space (and an outlet) to in your kitchen." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-terra-kaffe-aero-also-consider"><span>Terra Kaffe Aero: also consider</span></h3><div class="product"><a data-dimension112="ec3a8ca4-9b0a-11f1-8d7f-bdd79c6b2ff8" data-action="Deal Block" data-label="Read our Smeg Mini Milk Frother review" data-dimension48="Read our Smeg Mini Milk Frother review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1136px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="EQKQffUEvCGsav7Ygjf4Z3" name="smeg-mini-milk-frother-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EQKQffUEvCGsav7Ygjf4Z3-1920-80.png" mos="" align="middle" fullscreen="" width="1136" height="1136" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Smeg Mini Milk Frother</strong></p><p>This little beauty come in a number of colors. It makes hot froth, cold foam, and hot milk. It does take up less space on the counter than the Terra Kaffe Aero.</p><p><strong>Read our </strong><a href="https://www.techradar.com/home/coffee-machines/smeg-mini-milk-frother-review" data-dimension112="ec3a8ca4-9b0a-11f1-8d7f-bdd79c6b2ff8" data-action="Deal Block" data-label="Read our Smeg Mini Milk Frother review" data-dimension48="Read our Smeg Mini Milk Frother review" data-dimension25=""><strong>Smeg Mini Milk Frother review</strong></a><strong> </strong></p></div><div class="product"><a data-dimension112="ec3a8d08-9b0a-11f1-883c-f1755b108435" data-action="Deal Block" data-label="Check out our Philips Baristina Milk Frother review" data-dimension48="Check out our Philips Baristina Milk Frother review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1106px;"><p class="vanilla-image-block" style="padding-top:105.06%;"><img id="h4cTPTJvHC4YuxUZPz9oDa" name="philips-baristina-milk-frother-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/h4cTPTJvHC4YuxUZPz9oDa-1920-80.png" mos="" align="middle" fullscreen="" width="1106" height="1162" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Philips Baristina Milk Frother</strong></p><p>It's a bit cheaper and smaller than the Terra Kaffe Aero. It makes hot milk, hot foam, and cold foam. Choose from two colors, black or white.</p><p><strong>Check out our </strong><a href="https://www.techradar.com/home/coffee-machines/philips-baristina-milk-frother-review" data-dimension112="ec3a8d08-9b0a-11f1-883c-f1755b108435" data-action="Deal Block" data-label="Check out our Philips Baristina Milk Frother review" data-dimension48="Check out our Philips Baristina Milk Frother review" data-dimension25=""><strong>Philips Baristina Milk Frother review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="ec3a8d08-9b0a-11f1-883c-f1755b108435" data-action="Deal Block" data-label="Check out our Philips Baristina Milk Frother review" data-dimension48="Check out our Philips Baristina Milk Frother review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-terra-kaffe-aero"><span>How I tested the Terra Kaffe Aero</span></h3><p>I tested all of the settings: Hot Froth, Hot Milk, Cold Foam, and Matcha multiple times. I tested skim dairy milk and two different plant-based milks. I made matcha in water and tried it straight, added frothed milk to it, and made the matcha directly in milk. I tested it both hot and iced. I also made a simple salad dressing on the Cold Foam setting.</p><p><em>First reviewed August 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ninja CrushBOSS is a food processor, full-sized blender, and personal blender in one. ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-ninja-crushboss-one-minute-review"><span>Ninja CrushBOSS: one-minute review</span></h2><p>The Ninja CrushBOSS is an impressive three-in-one kitchen system. The largest container, a 72-ounce pitcher blender is made for blending big batches of whatever foods and beverages you like. The medium-sized 64-ounce container is a food processor, to which you can attach a handful of different blades that slice, dice, and shred various foods. The food processor bowl also has a tower blade for blending and a dough blade for making breads. The smallest vessel is a 26-ounce tumbler is perfect for single-serve smoothies, iced coffees, and slushies. It comes with a sipping lid and straw so you can just blend and go.</p><p>I put the whole system through its paces and was impressed with the results. If you're in the market for both a blender and a food processor, especially if you want both large and single-serve blenders, you can save money by just buying the Ninja CrushBOSS.</p><p>I have to admit that unboxing this system felt a bit intimidating. There are a <em>lot</em> of parts. That is the point of it, of course — to be everything for everyone — but be prepared to take some time to learn how all of the parts fit together and how it all works. You'll be washing a lot of dishes. Plus, some of the pieces do nest, but you're still looking at a lot of storage space for all the bits and bobs.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HiYV7rKz3WiwoixET94Hi4" name="ninja-crushboss-blender-food-processor-flat-lay" alt="Ninja CrushBOSS and everything it comes with" src="https://cdn.mos.cms.futurecdn.net/HiYV7rKz3WiwoixET94Hi4-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h2 class="article-body__section" id="section-ninja-crushboss-price-and-availability"><span>Ninja CrushBOSS: price and availability</span></h2><ul><li><strong>List price: $319.99 / £239.99 (about AU$450)</strong></li><li><strong>Available direct from Ninja, and from third-party retailers including Amazon</strong></li></ul><p>The Ninja CrushBOSS is being sold on Ninja's own website and third-party retailers in the US and UK, with a list price of $319.99 / £239.99 for the unit with all attachments. That's about AU$450, but we don't yet have a release date for the CrushBOSS in Australia. Colorways include Midnight Blue, Black &amp; Copper, Stone &amp; Gold, Mocha &amp; Gold, Bone &amp; White Gold, and Onyx — with more colors coming by the end of 2026.</p><ul><li><strong>Value score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-ninja-crushboss-specifications"><span>Ninja CrushBOSS: specifications</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$319</p></td></tr><tr><td class="firstcol " ><p>Vessel sizes</p></td><td  ><p>72-ounce, 64-ounce, 26-ounce</p></td></tr><tr><td class="firstcol " ><p>Control panel programs</p></td><td  ><p>SmoothSense, PrepIQ, Custom</p></td></tr><tr><td class="firstcol " ><p>Vessels material</p></td><td  ><p>BPA-free plastic</p></td></tr><tr><td class="firstcol " ><p>Maximum power</p></td><td  ><p>1,200 watts</p></td></tr><tr><td class="firstcol " ><p>Multiblade disk attachments available</p></td><td  ><p>Thin slice, thick slice, shred, crinkle cut, french fry, julienne</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-ninja-crushboss-design-and-features"><span>Ninja CrushBOSS: design and features</span></h2><ul><li><strong>Three blending/processing vessels</strong></li><li><strong>Three blending programs</strong></li><li><strong>1,200-watt motor </strong></li></ul><p>The Ninja CrushBOSS base suctions to your counter for stability. It comes with three different containers: a 72-ounce blending pitcher, a 64-ounce processing bowl, and a 26-ounce tumbler. Clean each of these containers by filling partway with water, adding a couple drops of dish soap, and blending.</p><p>The 72-ounce blending pitcher comes with a tower blade. There is a pour spout in the lid; for thinner liquids you can pop up the spout cap and pour from the pitcher. For thicker ones, you'll remove the whole lid and the blade before pouring out and scraping with a spatula if needed. </p><p>The 36-ounce processing bowl comes with a chopping blade, dough blade, and multiblade disc. There are optional attachments that fit into the multiblade disc, including thin slice, thick slide, shred, crinkle cut, french fry, and julienne. This bowl's lid includes a feed chute and pusher. </p><p>Finally, the 26-ounce single-serve tumbler comes with a sipping lid and a straw, so you can just blend your favorite frozen beverage and go. </p><p>The base suctions onto your counter for stability. It's sleek and classy-looking. The containers slide and lock into place securely.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-ninja-crushboss-performance"><span>Ninja CrushBOSS: performance</span></h2><h2 id="full-sized-blender">Full-sized blender</h2><p>Using the 72-ounce blender container, I made a smoothie using frozen fruit and juice in roughly equal proportions. I used the SmoothSense setting, which automatically detects the amount of solids and liquids in the vessel. The motor will stop and start, using the appropriate speeds to deliver smooth results. This turned out great.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xzehMNgjuD92yCfaSEjGj3-1920-80.jpg" alt="Ninja CrushBOSS blender in action" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KzSBquarKNKVvCNXDJ6GZ3-1920-80.jpg" alt="Ninja CrushBOSS blender in action" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QeQURqLVyk5VvYd3dZDgT3-1920-80.jpg" alt="Ninja CrushBOSS blender in action" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I also tried make a simple frozen yogurt with just frozen fruit and yogurt, this didn't blend up all that smoothly. If I had used any liquid, or possessed more patience, I could have easily made this a lot smoother. At the very least, I should have scraped down the sides and blended it once more. It's pretty chunky-looking but it still tasted great. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/R8VphdbMZhokTyeqTeSdGV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GeGrUc6u2kJRmCvPUGZzYV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SPV6uKgGrrhYjzJEAZPzVV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qEqYcF7NSwe3Eztj762GDV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="food-processor">Food processor</h2><p>The first thing I did with the 64-ounce food processor container was to crinkle-cut some carrots. It took me a little time to assemble the blades properly and peel the carrots. But once I dropped them into the food chute, it took only a second or two to totally cut up three carrots. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4YrFBTjgVEkKjHfbJKGdFB-1920-80.jpg" alt="Ninja CrushBOSS crinkle cut carrots" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6knzZaytWp8dLeii6vjUXB-1920-80.jpg" alt="Ninja CrushBOSS crinkle cut carrots" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uNyTdrhnBmA2ucVZse9GhB-1920-80.jpg" alt="Ninja CrushBOSS crinkle cut carrots" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Next I diced a sweet potato. Ninja's instructions say that you need to soften fibrous foods like sweet potatoes before processing. This is not necessary for regular white potatoes. I followed the instructions and air-fried the sweet potato whole for 10 minutes first and allowed it to cool. Again, once my sweet potato and the blades were ready to go, the Ninja CrushBOSS took only a couple of seconds to dice the entire sweet potato. Once diced, a quick air-fry (yes, quicker than I expected, I over-cooked it a bit) and it was ready to eat.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6vfJFC5FKWVt5dUGwGQG5c-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yceAom46BQ4pd5iF7btECc-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YjEiAvvya4ePwLfA8g65Jc-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sdGjTb4EPXSUikfbPrKTKc-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I shredded some hard parmesan cheese, using the shredding multiblade attachment. Like the other blades, it's super fast. However, a rather large chunk of parmesan got caught between the blade and the lid and wouldn't shred, as you can see in my photos below.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/92vxa7yttp94UEECAX92Je-1920-80.jpg" alt="Ninja CrushBOSS shredding parmesan cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tf2wjkvQF3ND29rhSE7vEe-1920-80.jpg" alt="Ninja CrushBOSS shredding parmesan cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kh6HQsxECLxtipAjsRgyZe-1920-80.jpg" alt="Ninja CrushBOSS shredding parmesan cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Then I tried a slightly softer cheese, a Swiss. This one also shredded in just a few seconds, and the chunks left after shredding were much smaller.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UivtprcPsAcQWDvVg9onSD-1920-80.jpg" alt="Ninja CrushBOSS shredding Swiss cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AbMMuUdHjbJq2jqR9KTSzC-1920-80.jpg" alt="Ninja CrushBOSS shredding Swiss cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VgvyZekjXijfPcWB5idgJD-1920-80.jpg" alt="Ninja CrushBOSS shredding Swiss cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Next I tried the blade tower, which is centered inside the food processor bowl, just like a blender blade (as opposed to the multiblade system, which sits just under the lid). I made some coarse oat flour. Again, this was super fast. I probably could have run it again if I wanted the flour to be finer, but this was fine for me.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iiz5d9kNRUtrV5Gp3aqcTb-1920-80.jpg" alt="Ninja CrushBOSS making oat flour" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tdbm5nhKLEYcerNzKk7yTb-1920-80.jpg" alt="Ninja CrushBOSS making oat flour" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Next I blended some protein pancake batter in the food processor bowl. Of course, the Ninja CrushBOSS made quick work of this. The batter came out pretty smooth and cooked up beautifully.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/VygE6GK2EUEXHu4f8Xtos7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xYAkCvjhcbyUUV3zQeYvv7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U9FzcyszdwF2KURmwCSgx7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9Nim4AHeuUjqscid35gGz7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Lwa2WuLmjsw78FATRx43r7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I made some hummus, which made me question why I ever bought pre-made hummus from the store! It's so quick and easy with a blender/food processor like the Ninja CrushBOSS. And it's much tastier. I did scrape down the sides after the initial processing session and process it again. It was worth the extra cycle to get a totally uniform result, though if you like it chunky, that's not necessary.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JioQ3RvSKmWWJYJ3ZfjGnZ-1920-80.jpg" alt="Ninja CrushBOSS made hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VkH22SGTujUxVw5rYThBmT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xeSMXMNVrJVhUwLV9y8HhT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/otxV5XrxJH2hMXBpixz7fT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d97PqKvoRr84jnQqy4griT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cRfzMpCTzAAESNHZrpRxhT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6XDRP9DboLJeRMjdoX5Q9T-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="tumbler-cup">Tumbler cup</h2><p>The single-serve tumbler cup assembly is just like the <a href="https://www.techradar.com/home/juicers-blenders/ninja-blendboss-tumbler-blender-review">Ninja BlendBOSS</a>. Just put in your ingredients, screw on the blade lid, and twist it into place on the power base. You do need to have a bit of liquid in order to blend properly, but as long as you do, everything comes out great. Even ice is totally obliterated. I made this banana peanut butter smoothie which came out totally smooth.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FmjrMSuxX4GWdccaABG5c7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/srFbb2NLbR69q7LVbQsWz7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XP3gfwUrjepkCz77BxAsr7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tY2LRJRvMsZ7rJhWVUw8T7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I made a very similar smoothie, this one was banana chocolate. It was also amazing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/F8VRUckGHzrpNjvN82hgqf-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3vvmoj2VJwS4CUDQPhGoug-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6V4n2VzYYKPfZ5gLTtcwig-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/piydFPuCD3tL6rSLXeUCdg-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I made a simple lemonade slushie, just ice, water, lemon juice, and vanilla syrup. This was a quick and tasty treat. Though the ice was thoroughly crushed, the mixture wasn't totally homogenous. The icy part and the liquid part tended to separate as I drank it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jUSi3g9GDbQnyjTmiNksBC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wtAaomNr7Atouysv3cyjWC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VVfKN6Tx2R93MGwEUGQrCC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QDZSTEDmanJfjpjS3FSwLC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FvPnn72Zy7Xz5aTF5fBHFC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I also used this smaller blender cup to prepare some frozen treats in the <a href="https://www.techradar.com/home/small-appliances/ninja-swirl-by-creami-review">Ninja Creami Swirl. </a>I started with a pistachio-flavored <a href="https://www.techradar.com/home/coffee-machines/healthier-ninja-creami-recipes-no-artificial-sweeteners">healthier ice cream</a>, which included whole pistachios and dates. These can be challenging to blend, but the resulting mixture was smooth. There was a bit of "dust" at the bottom (I probably could have run it twice), but once frozen in the Creami pint, you couldn't tell. This turned out amazing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nYV6y2Re3qKeYxnWv6CV2U-1920-80.jpg" alt="Ninja CrushBOSS making pistachio ice cream" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VVJ4N8qcShqEi3TcVexfgT-1920-80.jpg" alt="Ninja CrushBOSS making pistachio ice cream" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RSEdqVwH2a4XUttREaWC3U-1920-80.jpg" alt="Ninja CrushBOSS making pistachio ice cream" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I also made a healthier version of Dole whip for the Ninja Creami Swirl. This blended up perfectly and turned out fantastic. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/s6zrpaUQpQGRaVSePsJyJF-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SRReu4aXMNssPZ6dVn6udF-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8PVfBq7VxGaq9zkySGDDbF-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KyFQKqihLkFv9u4CY2vE-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 4.5/5 </strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-ninja-crushboss"><span>Should you buy the Ninja CrushBOSS?</span></h2><div ><table><caption>Ninja CrushBOSS report card</caption><thead><tr><th class="firstcol " ><p><strong>Attributes</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Rating</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>While not cheap, the Ninja CrushBOSS replaces three different kitchen tools.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>It's well-designed to do the work of three appliances in one.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The Ninja CrushBOSS performs as expected, making quick work of a variety of foods.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Overall</p></td><td  ><p>The Ninja CrushBOSS is an excellent 3-in-1 food processor, blender, and mini blender.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-10">Buy it if</h2><div class="product"><p><strong>You need multiple blending/processing appliances </strong></p><p>If you're in the market for even two of the three: full-sized blender, mini blender, or food processor, then you'll find this a worthwhile purchase. Any two of the three would likely cost at least as much and take up more space. Need all three? This is a no-brainer.</p></div><div class="product"><p><strong>You just need a powerful tool</strong></p><p>Frankly, even if you just need one, you still might consider the Ninja CrushBOSS. Its 1200-watt motor made lightning quick work of everything I tried, from ice to nuts to sticky dates. You might just find some use for the other functions once you have this in your kitchen.</p></div><div class="product"><p><strong>You want some automation</strong></p><p>The Ninja CrushBOSS has some automated features that take the guesswork out of how long to run and how much power to use. SmoothSense automatically senses ingredients and PrepIQ has individual programs for specific functions. Of course, you can just use manual settings if you prefer.</p></div><h2 id="don-39-t-buy-it-if-9">Don't buy it if</h2><div class="product"><p><strong>You are on a tight budget</strong></p><p>There are certainly cheaper blenders and food processors on the market, though they won't have some of the advanced features that the Ninja CrushBOSS does.</p></div><div class="product"><p><strong>You hate to unbox new appliances </strong></p><p>If you are easily intimidated by new appliances and tend to leave them sitting in the box for a while, this isn't the appliance for you. You'll have a lot to unpack, and you'll actually need to read the manual to learn how to assemble and use the Ninja CrushBOSS.</p></div><div class="product"><p><strong>You have limited counter and storage space</strong></p><p>While he Ninja CrushBOSS has just one base, it has so many parts and pieces. You'll have to find space in your kitchen to store them all.</p></div><h2 class="article-body__section" id="section-ninja-crushboss-also-consider"><span>Ninja CrushBOSS: also consider</span></h2><p>If the Ninja CrushBOSS isn't exactly what you're looking for, you might consider the following:</p><div class="product"><a data-dimension112="e2842d84-8c44-11f1-840d-9bc6517a8a3c" data-action="Deal Block" data-label="Read our review of the Vitamix A3500" data-dimension48="Read our review of the Vitamix A3500" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="mP784om5KDB2bKk6GjzywH" name="01-a3500i-on_white-intl-2000x2000.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/mP784om5KDB2bKk6GjzywH-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Vitamix A3500</strong></p><p>My go-to blender for decades has been a Vitamix. There's a reason you see these in bars and restaurants so often. It's "just" a blender, but it does the job well.</p><p><strong>Read our review of the </strong><a href="https://www.techradar.com/reviews/vitamix-a3500" data-dimension112="e2842d84-8c44-11f1-840d-9bc6517a8a3c" data-action="Deal Block" data-label="Read our review of the Vitamix A3500" data-dimension48="Read our review of the Vitamix A3500" data-dimension25=""><strong>Vitamix A3500</strong></a><strong> </strong></p></div><div class="product"><a data-dimension112="e2842de8-8c44-11f1-aa3b-6b56a807efa2" data-action="Deal Block" data-label="Check out our review of the Breville the All in One" data-dimension48="Check out our review of the Breville the All in One" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1362px;"><p class="vanilla-image-block" style="padding-top:97.06%;"><img id="FVC5HWZxCd6FJwhGtd4yrK" name="breville-all-in-one-marketing-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FVC5HWZxCd6FJwhGtd4yrK-1920-80.png" mos="" align="middle" fullscreen="" width="1362" height="1322" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Breville the All in One</strong></p><p>Here is another blender/food processor you might consider if the Ninja CrushBOSS seems like too much. While not as fully-featured, it's certainly more simple and compact.</p><p><strong>Check out our review of the </strong><a href="https://www.techradar.com/home/juicers-blenders/breville-the-all-in-one-stick-mixer-review" data-dimension112="e2842de8-8c44-11f1-aa3b-6b56a807efa2" data-action="Deal Block" data-label="Check out our review of the Breville the All in One" data-dimension48="Check out our review of the Breville the All in One" data-dimension25=""><strong>Breville the All in One</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e2842de8-8c44-11f1-aa3b-6b56a807efa2" data-action="Deal Block" data-label="Check out our review of the Breville the All in One" data-dimension48="Check out our review of the Breville the All in One" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="7b39d6be-8cef-11f1-aacd-9be5a1d7c87f" data-action="Deal Block" data-label="Read my review of the Ninja BlendBOSS" data-dimension48="Read my review of the Ninja BlendBOSS" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:694px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qvyn5ZQZUsbQAHqgCWyU9A" name="ninja-blendboss-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qvyn5ZQZUsbQAHqgCWyU9A-1920-80.png" mos="" align="middle" fullscreen="" width="694" height="694" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja BlendBOSS</strong></p><p>You really just want that single-serve blender and to-go tumbler? Ninja's BlendBOSS is what you want. It takes up minimal space in your kitchen and yet it's surprisingly powerful and fast for making smoothies, slushies, iced coffee, and more. It comes with that sipping lid and straw so you can just blend and go.</p><p><strong>Read my review of the </strong><a href="https://www.techradar.com/home/juicers-blenders/ninja-blendboss-tumbler-blender-review" data-dimension112="7b39d6be-8cef-11f1-aacd-9be5a1d7c87f" data-action="Deal Block" data-label="Read my review of the Ninja BlendBOSS" data-dimension48="Read my review of the Ninja BlendBOSS" data-dimension25=""><strong>Ninja BlendBOSS</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7b39d6be-8cef-11f1-aacd-9be5a1d7c87f" data-action="Deal Block" data-label="Read my review of the Ninja BlendBOSS" data-dimension48="Read my review of the Ninja BlendBOSS" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-ninja-power-crushboss"><span>How I tested the Ninja Power CrushBOSS</span></h2><ul><li><strong>I tested all three containers and various multiblade attachments</strong></li><li><strong>I used SmoothSense, PrepIQ, and Custom settings</strong></li><li><strong>I cleaned it after every use </strong></li></ul><p>I used the food processor bowl to crinkle-cut carrots, dice a sweet potato, shred both parmesan and Swiss cheeses, make oatmeal flour, blend up hummus, and blend pancake batter. I used the large blender to make frozen yogurt and a fruit smoothie. In the small tumbler blender, I blended two different mixtures to make frozen treats in the Ninja Creami (Dole whip and pistachio ice cream), two different yogurt/frozen fruit smoothies (banana peanut butter and banana chocolate), and a lemonade slushie.</p><p>Read more about <a href="https://www.techradar.com/news/how-we-test">how we test.</a></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/juicers-blenders/ninja-crushboss-review</link>
                                                                            <description>
                            <![CDATA[ The Ninja CrushBOSS is a kitchen system that takes care of all your food processing and blending needs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">Jdg7ALfzTf6krfYH4SyMKi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/PcENRvPtoJ8VK6qWPw9DZe-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 29 Aug 2026 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Juicers & Blenders]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Karen Freeman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DDiERCZA8XFtW9uHdwjzpL-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Karen is a world traveler, writer, teacher, family woman, and occasionally a movie extra. She has been writing about Apple, consumer tech, and lifestyle products since 2010 for various publications including TechRadar, CNET, Tom’s Guide, iMore, Macworld, AppAdvice, and WatchAware.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/PcENRvPtoJ8VK6qWPw9DZe-1920-80.jpg">
                                                            <media:credit><![CDATA[Karen Freeman / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ninja CrushBOSS base with three containers]]></media:description>                                                            <media:text><![CDATA[Ninja CrushBOSS base with three containers]]></media:text>
                                <media:title type="plain"><![CDATA[Ninja CrushBOSS base with three containers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/PcENRvPtoJ8VK6qWPw9DZe-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-ninja-crushboss-one-minute-review"><span>Ninja CrushBOSS: one-minute review</span></h2><p>The Ninja CrushBOSS is an impressive three-in-one kitchen system. The largest container, a 72-ounce pitcher blender is made for blending big batches of whatever foods and beverages you like. The medium-sized 64-ounce container is a food processor, to which you can attach a handful of different blades that slice, dice, and shred various foods. The food processor bowl also has a tower blade for blending and a dough blade for making breads. The smallest vessel is a 26-ounce tumbler is perfect for single-serve smoothies, iced coffees, and slushies. It comes with a sipping lid and straw so you can just blend and go.</p><p>I put the whole system through its paces and was impressed with the results. If you're in the market for both a blender and a food processor, especially if you want both large and single-serve blenders, you can save money by just buying the Ninja CrushBOSS.</p><p>I have to admit that unboxing this system felt a bit intimidating. There are a <em>lot</em> of parts. That is the point of it, of course — to be everything for everyone — but be prepared to take some time to learn how all of the parts fit together and how it all works. You'll be washing a lot of dishes. Plus, some of the pieces do nest, but you're still looking at a lot of storage space for all the bits and bobs.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HiYV7rKz3WiwoixET94Hi4" name="ninja-crushboss-blender-food-processor-flat-lay" alt="Ninja CrushBOSS and everything it comes with" src="https://cdn.mos.cms.futurecdn.net/HiYV7rKz3WiwoixET94Hi4-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h2 class="article-body__section" id="section-ninja-crushboss-price-and-availability"><span>Ninja CrushBOSS: price and availability</span></h2><ul><li><strong>List price: $319.99 / £239.99 (about AU$450)</strong></li><li><strong>Available direct from Ninja, and from third-party retailers including Amazon</strong></li></ul><p>The Ninja CrushBOSS is being sold on Ninja's own website and third-party retailers in the US and UK, with a list price of $319.99 / £239.99 for the unit with all attachments. That's about AU$450, but we don't yet have a release date for the CrushBOSS in Australia. Colorways include Midnight Blue, Black &amp; Copper, Stone &amp; Gold, Mocha &amp; Gold, Bone &amp; White Gold, and Onyx — with more colors coming by the end of 2026.</p><ul><li><strong>Value score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-ninja-crushboss-specifications"><span>Ninja CrushBOSS: specifications</span></h2><div ><table><tbody><tr><td class="firstcol " ><p>Price</p></td><td  ><p>$319</p></td></tr><tr><td class="firstcol " ><p>Vessel sizes</p></td><td  ><p>72-ounce, 64-ounce, 26-ounce</p></td></tr><tr><td class="firstcol " ><p>Control panel programs</p></td><td  ><p>SmoothSense, PrepIQ, Custom</p></td></tr><tr><td class="firstcol " ><p>Vessels material</p></td><td  ><p>BPA-free plastic</p></td></tr><tr><td class="firstcol " ><p>Maximum power</p></td><td  ><p>1,200 watts</p></td></tr><tr><td class="firstcol " ><p>Multiblade disk attachments available</p></td><td  ><p>Thin slice, thick slice, shred, crinkle cut, french fry, julienne</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-ninja-crushboss-design-and-features"><span>Ninja CrushBOSS: design and features</span></h2><ul><li><strong>Three blending/processing vessels</strong></li><li><strong>Three blending programs</strong></li><li><strong>1,200-watt motor </strong></li></ul><p>The Ninja CrushBOSS base suctions to your counter for stability. It comes with three different containers: a 72-ounce blending pitcher, a 64-ounce processing bowl, and a 26-ounce tumbler. Clean each of these containers by filling partway with water, adding a couple drops of dish soap, and blending.</p><p>The 72-ounce blending pitcher comes with a tower blade. There is a pour spout in the lid; for thinner liquids you can pop up the spout cap and pour from the pitcher. For thicker ones, you'll remove the whole lid and the blade before pouring out and scraping with a spatula if needed. </p><p>The 36-ounce processing bowl comes with a chopping blade, dough blade, and multiblade disc. There are optional attachments that fit into the multiblade disc, including thin slice, thick slide, shred, crinkle cut, french fry, and julienne. This bowl's lid includes a feed chute and pusher. </p><p>Finally, the 26-ounce single-serve tumbler comes with a sipping lid and a straw, so you can just blend your favorite frozen beverage and go. </p><p>The base suctions onto your counter for stability. It's sleek and classy-looking. The containers slide and lock into place securely.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-ninja-crushboss-performance"><span>Ninja CrushBOSS: performance</span></h2><h2 id="full-sized-blender">Full-sized blender</h2><p>Using the 72-ounce blender container, I made a smoothie using frozen fruit and juice in roughly equal proportions. I used the SmoothSense setting, which automatically detects the amount of solids and liquids in the vessel. The motor will stop and start, using the appropriate speeds to deliver smooth results. This turned out great.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/xzehMNgjuD92yCfaSEjGj3-1920-80.jpg" alt="Ninja CrushBOSS blender in action" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/KzSBquarKNKVvCNXDJ6GZ3-1920-80.jpg" alt="Ninja CrushBOSS blender in action" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QeQURqLVyk5VvYd3dZDgT3-1920-80.jpg" alt="Ninja CrushBOSS blender in action" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I also tried make a simple frozen yogurt with just frozen fruit and yogurt, this didn't blend up all that smoothly. If I had used any liquid, or possessed more patience, I could have easily made this a lot smoother. At the very least, I should have scraped down the sides and blended it once more. It's pretty chunky-looking but it still tasted great. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/R8VphdbMZhokTyeqTeSdGV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/GeGrUc6u2kJRmCvPUGZzYV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SPV6uKgGrrhYjzJEAZPzVV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qEqYcF7NSwe3Eztj762GDV-1920-80.jpg" alt="Ninja CrushBOSS making cherry frozen yogurt" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="food-processor">Food processor</h2><p>The first thing I did with the 64-ounce food processor container was to crinkle-cut some carrots. It took me a little time to assemble the blades properly and peel the carrots. But once I dropped them into the food chute, it took only a second or two to totally cut up three carrots. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4YrFBTjgVEkKjHfbJKGdFB-1920-80.jpg" alt="Ninja CrushBOSS crinkle cut carrots" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6knzZaytWp8dLeii6vjUXB-1920-80.jpg" alt="Ninja CrushBOSS crinkle cut carrots" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/uNyTdrhnBmA2ucVZse9GhB-1920-80.jpg" alt="Ninja CrushBOSS crinkle cut carrots" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Next I diced a sweet potato. Ninja's instructions say that you need to soften fibrous foods like sweet potatoes before processing. This is not necessary for regular white potatoes. I followed the instructions and air-fried the sweet potato whole for 10 minutes first and allowed it to cool. Again, once my sweet potato and the blades were ready to go, the Ninja CrushBOSS took only a couple of seconds to dice the entire sweet potato. Once diced, a quick air-fry (yes, quicker than I expected, I over-cooked it a bit) and it was ready to eat.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/6vfJFC5FKWVt5dUGwGQG5c-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/yceAom46BQ4pd5iF7btECc-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/YjEiAvvya4ePwLfA8g65Jc-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sdGjTb4EPXSUikfbPrKTKc-1920-80.jpg" alt="Ninja CrushBOSS food processor and sweet potato" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I shredded some hard parmesan cheese, using the shredding multiblade attachment. Like the other blades, it's super fast. However, a rather large chunk of parmesan got caught between the blade and the lid and wouldn't shred, as you can see in my photos below.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/92vxa7yttp94UEECAX92Je-1920-80.jpg" alt="Ninja CrushBOSS shredding parmesan cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tf2wjkvQF3ND29rhSE7vEe-1920-80.jpg" alt="Ninja CrushBOSS shredding parmesan cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/kh6HQsxECLxtipAjsRgyZe-1920-80.jpg" alt="Ninja CrushBOSS shredding parmesan cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Then I tried a slightly softer cheese, a Swiss. This one also shredded in just a few seconds, and the chunks left after shredding were much smaller.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/UivtprcPsAcQWDvVg9onSD-1920-80.jpg" alt="Ninja CrushBOSS shredding Swiss cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/AbMMuUdHjbJq2jqR9KTSzC-1920-80.jpg" alt="Ninja CrushBOSS shredding Swiss cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VgvyZekjXijfPcWB5idgJD-1920-80.jpg" alt="Ninja CrushBOSS shredding Swiss cheese" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Next I tried the blade tower, which is centered inside the food processor bowl, just like a blender blade (as opposed to the multiblade system, which sits just under the lid). I made some coarse oat flour. Again, this was super fast. I probably could have run it again if I wanted the flour to be finer, but this was fine for me.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/iiz5d9kNRUtrV5Gp3aqcTb-1920-80.jpg" alt="Ninja CrushBOSS making oat flour" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Tdbm5nhKLEYcerNzKk7yTb-1920-80.jpg" alt="Ninja CrushBOSS making oat flour" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>Next I blended some protein pancake batter in the food processor bowl. Of course, the Ninja CrushBOSS made quick work of this. The batter came out pretty smooth and cooked up beautifully.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/VygE6GK2EUEXHu4f8Xtos7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xYAkCvjhcbyUUV3zQeYvv7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/U9FzcyszdwF2KURmwCSgx7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9Nim4AHeuUjqscid35gGz7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Lwa2WuLmjsw78FATRx43r7-1920-80.jpg" alt="Ninja CrushBOSS blending pancake batter" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I made some hummus, which made me question why I ever bought pre-made hummus from the store! It's so quick and easy with a blender/food processor like the Ninja CrushBOSS. And it's much tastier. I did scrape down the sides after the initial processing session and process it again. It was worth the extra cycle to get a totally uniform result, though if you like it chunky, that's not necessary.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JioQ3RvSKmWWJYJ3ZfjGnZ-1920-80.jpg" alt="Ninja CrushBOSS made hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VkH22SGTujUxVw5rYThBmT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/xeSMXMNVrJVhUwLV9y8HhT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/otxV5XrxJH2hMXBpixz7fT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/d97PqKvoRr84jnQqy4griT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/cRfzMpCTzAAESNHZrpRxhT-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6XDRP9DboLJeRMjdoX5Q9T-1920-80.jpg" alt="Ninja CrushBOSS making hummus" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="tumbler-cup">Tumbler cup</h2><p>The single-serve tumbler cup assembly is just like the <a href="https://www.techradar.com/home/juicers-blenders/ninja-blendboss-tumbler-blender-review">Ninja BlendBOSS</a>. Just put in your ingredients, screw on the blade lid, and twist it into place on the power base. You do need to have a bit of liquid in order to blend properly, but as long as you do, everything comes out great. Even ice is totally obliterated. I made this banana peanut butter smoothie which came out totally smooth.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/FmjrMSuxX4GWdccaABG5c7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/srFbb2NLbR69q7LVbQsWz7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/XP3gfwUrjepkCz77BxAsr7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/tY2LRJRvMsZ7rJhWVUw8T7-1920-80.jpg" alt="Ninja CrushBOSS making banana peanut butter smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I made a very similar smoothie, this one was banana chocolate. It was also amazing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/F8VRUckGHzrpNjvN82hgqf-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/3vvmoj2VJwS4CUDQPhGoug-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6V4n2VzYYKPfZ5gLTtcwig-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/piydFPuCD3tL6rSLXeUCdg-1920-80.jpg" alt="Ninja CrushBOSS making banana chocolate smoothie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I made a simple lemonade slushie, just ice, water, lemon juice, and vanilla syrup. This was a quick and tasty treat. Though the ice was thoroughly crushed, the mixture wasn't totally homogenous. The icy part and the liquid part tended to separate as I drank it.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jUSi3g9GDbQnyjTmiNksBC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/wtAaomNr7Atouysv3cyjWC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VVfKN6Tx2R93MGwEUGQrCC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QDZSTEDmanJfjpjS3FSwLC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FvPnn72Zy7Xz5aTF5fBHFC-1920-80.jpg" alt="Ninja CrushBOSS making slushie" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I also used this smaller blender cup to prepare some frozen treats in the <a href="https://www.techradar.com/home/small-appliances/ninja-swirl-by-creami-review">Ninja Creami Swirl. </a>I started with a pistachio-flavored <a href="https://www.techradar.com/home/coffee-machines/healthier-ninja-creami-recipes-no-artificial-sweeteners">healthier ice cream</a>, which included whole pistachios and dates. These can be challenging to blend, but the resulting mixture was smooth. There was a bit of "dust" at the bottom (I probably could have run it twice), but once frozen in the Creami pint, you couldn't tell. This turned out amazing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/nYV6y2Re3qKeYxnWv6CV2U-1920-80.jpg" alt="Ninja CrushBOSS making pistachio ice cream" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/VVJ4N8qcShqEi3TcVexfgT-1920-80.jpg" alt="Ninja CrushBOSS making pistachio ice cream" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/RSEdqVwH2a4XUttREaWC3U-1920-80.jpg" alt="Ninja CrushBOSS making pistachio ice cream" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><p>I also made a healthier version of Dole whip for the Ninja Creami Swirl. This blended up perfectly and turned out fantastic. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/s6zrpaUQpQGRaVSePsJyJF-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SRReu4aXMNssPZ6dVn6udF-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8PVfBq7VxGaq9zkySGDDbF-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/T9KyFQKqihLkFv9u4CY2vE-1920-80.jpg" alt="Ninja CrushBOSS making dole whip style frozen treat" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 4.5/5 </strong></li></ul><h2 class="article-body__section" id="section-should-you-buy-the-ninja-crushboss"><span>Should you buy the Ninja CrushBOSS?</span></h2><div ><table><caption>Ninja CrushBOSS report card</caption><thead><tr><th class="firstcol " ><p><strong>Attributes</strong></p></th><th  ><p><strong>Notes</strong></p></th><th  ><p><strong>Rating</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>While not cheap, the Ninja CrushBOSS replaces three different kitchen tools.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>It's well-designed to do the work of three appliances in one.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The Ninja CrushBOSS performs as expected, making quick work of a variety of foods.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Overall</p></td><td  ><p>The Ninja CrushBOSS is an excellent 3-in-1 food processor, blender, and mini blender.</p></td><td  ><p>4.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-10">Buy it if</h2><div class="product"><p><strong>You need multiple blending/processing appliances </strong></p><p>If you're in the market for even two of the three: full-sized blender, mini blender, or food processor, then you'll find this a worthwhile purchase. Any two of the three would likely cost at least as much and take up more space. Need all three? This is a no-brainer.</p></div><div class="product"><p><strong>You just need a powerful tool</strong></p><p>Frankly, even if you just need one, you still might consider the Ninja CrushBOSS. Its 1200-watt motor made lightning quick work of everything I tried, from ice to nuts to sticky dates. You might just find some use for the other functions once you have this in your kitchen.</p></div><div class="product"><p><strong>You want some automation</strong></p><p>The Ninja CrushBOSS has some automated features that take the guesswork out of how long to run and how much power to use. SmoothSense automatically senses ingredients and PrepIQ has individual programs for specific functions. Of course, you can just use manual settings if you prefer.</p></div><h2 id="don-39-t-buy-it-if-9">Don't buy it if</h2><div class="product"><p><strong>You are on a tight budget</strong></p><p>There are certainly cheaper blenders and food processors on the market, though they won't have some of the advanced features that the Ninja CrushBOSS does.</p></div><div class="product"><p><strong>You hate to unbox new appliances </strong></p><p>If you are easily intimidated by new appliances and tend to leave them sitting in the box for a while, this isn't the appliance for you. You'll have a lot to unpack, and you'll actually need to read the manual to learn how to assemble and use the Ninja CrushBOSS.</p></div><div class="product"><p><strong>You have limited counter and storage space</strong></p><p>While he Ninja CrushBOSS has just one base, it has so many parts and pieces. You'll have to find space in your kitchen to store them all.</p></div><h2 class="article-body__section" id="section-ninja-crushboss-also-consider"><span>Ninja CrushBOSS: also consider</span></h2><p>If the Ninja CrushBOSS isn't exactly what you're looking for, you might consider the following:</p><div class="product"><a data-dimension112="e2842d84-8c44-11f1-840d-9bc6517a8a3c" data-action="Deal Block" data-label="Read our review of the Vitamix A3500" data-dimension48="Read our review of the Vitamix A3500" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="mP784om5KDB2bKk6GjzywH" name="01-a3500i-on_white-intl-2000x2000.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/mP784om5KDB2bKk6GjzywH-1920-80.jpg" mos="" align="middle" fullscreen="" width="2000" height="2000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Vitamix A3500</strong></p><p>My go-to blender for decades has been a Vitamix. There's a reason you see these in bars and restaurants so often. It's "just" a blender, but it does the job well.</p><p><strong>Read our review of the </strong><a href="https://www.techradar.com/reviews/vitamix-a3500" data-dimension112="e2842d84-8c44-11f1-840d-9bc6517a8a3c" data-action="Deal Block" data-label="Read our review of the Vitamix A3500" data-dimension48="Read our review of the Vitamix A3500" data-dimension25=""><strong>Vitamix A3500</strong></a><strong> </strong></p></div><div class="product"><a data-dimension112="e2842de8-8c44-11f1-aa3b-6b56a807efa2" data-action="Deal Block" data-label="Check out our review of the Breville the All in One" data-dimension48="Check out our review of the Breville the All in One" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1362px;"><p class="vanilla-image-block" style="padding-top:97.06%;"><img id="FVC5HWZxCd6FJwhGtd4yrK" name="breville-all-in-one-marketing-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FVC5HWZxCd6FJwhGtd4yrK-1920-80.png" mos="" align="middle" fullscreen="" width="1362" height="1322" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Breville the All in One</strong></p><p>Here is another blender/food processor you might consider if the Ninja CrushBOSS seems like too much. While not as fully-featured, it's certainly more simple and compact.</p><p><strong>Check out our review of the </strong><a href="https://www.techradar.com/home/juicers-blenders/breville-the-all-in-one-stick-mixer-review" data-dimension112="e2842de8-8c44-11f1-aa3b-6b56a807efa2" data-action="Deal Block" data-label="Check out our review of the Breville the All in One" data-dimension48="Check out our review of the Breville the All in One" data-dimension25=""><strong>Breville the All in One</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="e2842de8-8c44-11f1-aa3b-6b56a807efa2" data-action="Deal Block" data-label="Check out our review of the Breville the All in One" data-dimension48="Check out our review of the Breville the All in One" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="7b39d6be-8cef-11f1-aacd-9be5a1d7c87f" data-action="Deal Block" data-label="Read my review of the Ninja BlendBOSS" data-dimension48="Read my review of the Ninja BlendBOSS" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:694px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qvyn5ZQZUsbQAHqgCWyU9A" name="ninja-blendboss-press-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qvyn5ZQZUsbQAHqgCWyU9A-1920-80.png" mos="" align="middle" fullscreen="" width="694" height="694" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja BlendBOSS</strong></p><p>You really just want that single-serve blender and to-go tumbler? Ninja's BlendBOSS is what you want. It takes up minimal space in your kitchen and yet it's surprisingly powerful and fast for making smoothies, slushies, iced coffee, and more. It comes with that sipping lid and straw so you can just blend and go.</p><p><strong>Read my review of the </strong><a href="https://www.techradar.com/home/juicers-blenders/ninja-blendboss-tumbler-blender-review" data-dimension112="7b39d6be-8cef-11f1-aacd-9be5a1d7c87f" data-action="Deal Block" data-label="Read my review of the Ninja BlendBOSS" data-dimension48="Read my review of the Ninja BlendBOSS" data-dimension25=""><strong>Ninja BlendBOSS</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="7b39d6be-8cef-11f1-aacd-9be5a1d7c87f" data-action="Deal Block" data-label="Read my review of the Ninja BlendBOSS" data-dimension48="Read my review of the Ninja BlendBOSS" data-dimension25="">View Deal</a></p></div><h2 class="article-body__section" id="section-how-i-tested-the-ninja-power-crushboss"><span>How I tested the Ninja Power CrushBOSS</span></h2><ul><li><strong>I tested all three containers and various multiblade attachments</strong></li><li><strong>I used SmoothSense, PrepIQ, and Custom settings</strong></li><li><strong>I cleaned it after every use </strong></li></ul><p>I used the food processor bowl to crinkle-cut carrots, dice a sweet potato, shred both parmesan and Swiss cheeses, make oatmeal flour, blend up hummus, and blend pancake batter. I used the large blender to make frozen yogurt and a fruit smoothie. In the small tumbler blender, I blended two different mixtures to make frozen treats in the Ninja Creami (Dole whip and pistachio ice cream), two different yogurt/frozen fruit smoothies (banana peanut butter and banana chocolate), and a lemonade slushie.</p><p>Read more about <a href="https://www.techradar.com/news/how-we-test">how we test.</a></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Fosi Audio Merak review: a compact and affordable CD player with a fatal flaw ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-fosi-audio-merak-review"><span>Fosi Audio Merak: Review</span></h2><p>First things first: the Fosi Audio Merak is not as portable a CD player as you might think by looking at it. Obviously it’s small (28 x 150 x 150mm, HxWxD) and light (less than half a kilogram), but though easily picked up and moved around, it requires mains power to function. So there’s no taking it out and about — unless you also take a powerbank with you, of course. No, the Merak is designed for slotting into an external system or for private domestic listening via headphones. </p><p>It manages both of these things thanks to a selection of analog and digital outputs. On the device's front, along with some physical controls and a rather small OLED display, there’s a 3.5mm headphone socket powered by Texas Instruments TPA6120 amplification. But it’s on the rear of the machine where the bulk of the action is. </p><p>As well as a 3.5mm line-level analog output, there’s a digital optical socket — so you can connect the Fosi Audio to a system either by letting the player do all the digital-to-analog conversion work, or by bypassing its Cirrus Logic CS4313 DAC chipset altogether. There’s also a USB-C slot for powering the player, a 12v trigger output for use in an appropriate system output, a slider to turn the electronic anti-shock protection on and off, and a USB-A slot.</p><p>The USB-A connection functions in both directions. You can plug in an appropriate flash drive and play digital audio files of many types, including FLAC, MP3 and WAV. Or you can load in a CD, plug in a flash drive, let the player know what you’re up to and then rip the CD as lossless 16bit/44.1kHz WAV files.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3471px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="2eKpFXY36JaiMWHhadUYGo" name="IMG_1273" alt="Rear panel of the Fosi Audi Merak CD player, showing various USB-A, USB-C, line-out connections and on/off switch." src="https://cdn.mos.cms.futurecdn.net/2eKpFXY36JaiMWHhadUYGo-1920-80.jpg" mos="" align="middle" fullscreen="" width="3471" height="1952" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><p>‘Letting the player know what you’re up to’ can be done in different ways. Six buttons on the front handle ‘power on/off’, ‘play/pause’ and ‘skip (or scroll) forwards or backwards’. They also allow you to scroll through your options for playback (‘repeat’, ‘shuffle’ or ‘sequential’), output mode (digital, analog or headphones) and begin or end CD ripping. </p><p>Eventually you’ll commit the number and length of button presses required to access these functions — or you could just use the little remote control handset that’s supplied. It’s slightly less convoluted than the button controls, and has some numerical buttons for direct track access, too. </p><p>The volume control, though, is no kind of chore to operate. It’s a big slider along the side of the player, finished in Fosi Audio’s customary orange, and it’s one of the more gratifying physical controls I’ve encountered lately. </p><p>Loading a disc is a fully manual process. The lid, which has a nice clear porthole the exact size of a CD, lifts and then it’s just a question of pushing the disc onto the central spindle securely. The lid's hinges feel robust, and the overall standard of build and finish is more than adequate in the context of the asking price.</p><p>With a disc of <em>Fusa Riot </em>by Bobby Hughes Experience loaded and playing, the Merak doesn’t take long to establish its credentials as an energetic, positive and quite revealing listen. At the top of the frequency range, in fact, it’s about as positive as it dares to be — there’s a lot of bite and shine to treble sounds, but somehow the Fosi Audio manages to stop just short of hardness or edginess. The midrange communicates well, with the notable levels of detail retrieval making voices sound articulate and characterful. At the bottom of the frequency range there’s a reasonable amount of body and substance, but where the Merak is very assertive at the top end, it plays things fractionally safe where bass is concerned. Low frequencies could easily have a little more impact and drive, but rhythms are nevertheless expressed well thanks to good control of bass attack.</p><p>It creates a nicely defined soundstage, and is open enough to allow emphasis for spaces as well as occurrences on the stage. Focus is good, too, no matter if you’re listening through headphones or with the Fosi Audio plugged into a wider system, and there’s sufficient dynamic headroom for a fairly full account of the distance between the most and the least intense passages in a recording.</p><p>Take the digital-to-analog duties away from the Fosi Audio by plugging it into an external DAC using its digital optical output and it’s possible to calm the excitable treble response just a little, but the switch also emphasizes just how adept the Merak’s Cirrus Logic circuitry is when it comes to identifying, revealing and contextualizing even the finer details contained on a CD. </p><p>And it’s also pretty impressive when it comes to ripping CDs — getting a 16bit/44.1kHz WAV file of your music onto an external USB drive is straightforward. I endured one or two false starts in the course of my testing, but ultimately the copies are faithful and of enjoyable high quality.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3376px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FiZb92J6jKzUW39PZB9Z6F" name="IMG_1272" alt="Orange volume control slider on the side panel of the Fosi Audio Merak CD player" src="https://cdn.mos.cms.futurecdn.net/FiZb92J6jKzUW39PZB9Z6F-1920-80.jpg" mos="" align="middle" fullscreen="" width="3376" height="1899" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><h2 class="article-body__section" id="section-fosi-audio-merak-review-price-and-release-date"><span>Fosi Audio Merak review: Price and release date</span></h2><ul><li><strong>Released on April 10, 2026</strong></li><li><strong>$139 / £129 (approx.) / about AU$199</strong></li></ul><p>The Fosi Audio Merak CD player is on sale now, and in the the United States it sells for $129. It goes for around £139 in the United Kingdom, while in Australia it will set you back around AU$199. </p><h3 class="article-body__section" id="section-fosi-audio-merak-review-value"><span>Fosi Audio Merak review: Value</span></h3><p>If you’re after a truly portable listening experience then the Fosi Audio Merak offers no kind of value whatsoever. </p><p>If, however, you want an affordable method of bringing CD-playing smarts to your existing audio system, or fancy being able to listen to your CD collection via headphones without having to plug into a full-size system, the Merak has plenty going for it before you even consider the quality of sound it’s capable of producing. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3368px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="qAmUUVrMz7HZA2a3NpNjzF" name="IMG_1271" alt="Front panel of the Fosi Audio Merak CD player, showing various buttons including power on, line-out, skip track, forwards, backwards, record, and a 3.5mm headphone jack." src="https://cdn.mos.cms.futurecdn.net/qAmUUVrMz7HZA2a3NpNjzF-1920-80.jpg" mos="" align="middle" fullscreen="" width="3368" height="1895" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><h2 class="article-body__section" id="section-should-you-buy-the-fosi-audio-merak"><span>Should you buy the Fosi Audio Merak?</span></h2><h2 id="buy-it-if-11">Buy it if...</h2><div class="product"><p><strong>You have an existing system (or headphones)</strong><br />The Fosi has plenty of digital and analog outputs and offers an easy plug-in-and-play option to insert into your current system. And it's just as simple to listen to your CD collection at home via your headphones, without bothering with your existing stack.</p></div><div class="product"><p><strong>You want to go lossless</strong><br />A USB-A connection that works both ways means you can plug in a flash drive to play digital audio files of various types – FLAC, MP3 and WAV included – or even load a CD and rip as lossless 16bit/44.1kHz WAV files. </p></div><div class="product"><p><strong>You enjoy an energetic listen</strong><br />There's real bite and shine to the top end of the frequency range, with detailed midrange, to deliver a positive and revealing sound. </p></div><h2 id="don-t-buy-it-if-2">Don't buy it if...</h2><div class="product"><p><strong>You prize portability</strong><br />Unless you bring a powerbank with you, listening to the Fosi Audio Merak on the go isn't possible. This is especially strange when you consider its small size. </p></div><div class="product"><p><strong>You like big bass</strong><br />The Fosi lacks impact and is a <em>little</em> lightweight in the low end, generally playing things just slightly too safe. </p></div><div class="product"><p><strong>You don't like using remote controls</strong><br />First things first, the remote control here is not the issue – it's easy to use and performs every function perfectly. Compare it with the clunky user interface on the front panel, though, and the differences are stark. The latter is convoluted where the remote is relatively intuitive.</p></div><h2 class="article-body__section" id="section-fosi-audio-merak-review-how-i-tested"><span>Fosi Audio Merak review: How I tested</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5702px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Px8syf5qBC54dih2NCvP7T" name="IMG_1269" alt="Top-down image of the Fosi Audio Merak CD player, with wired earphones coming out of the jack, on a white surface." src="https://cdn.mos.cms.futurecdn.net/Px8syf5qBC54dih2NCvP7T-1920-80.jpg" mos="" align="middle" fullscreen="" width="5702" height="3207" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><p>I've been testing audio home entertainment for nearly two decades. Anything that makes a noise, I want to listen to it.</p><p>I sat down with the Fosi Audio Merak at home – it needs mains power or a powerbank, remember – and connected it up to my existing system and my market-leading <a href="https://www.techradar.com/reviews/sennheiser-ie-900">Sennheiser IE 900 wired headphones</a>. It had the best of the best.</p><p>Over more than two weeks' testing, I listened to music of various different genres via CDs (obviously) and lossless digital audio files through an external flash drive.</p><p><a href="https://www.techradar.com/news/how-we-test">Read more about how we test</a></p><ul><li><em>First reviewed: August 2026</em></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/audio/earbuds-airpods/fosi-audio-merak-review</link>
                                                                            <description>
                            <![CDATA[ If your system needs an affordable compact disc solution (or if you want to hear your CDs in private), the Fosi Audio Merak might just be the answer… ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">FjU8Yi5n2UbkZk8ZSdBuoY</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Zb4z4uVocfKTxTyzZ3sjv6-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 15 Aug 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hi-Fi]]></category>
                                                    <category><![CDATA[Audio]]></category>
                                                                                                                    <dc:creator><![CDATA[ Simon Lucas ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XZU88gUp2HCF96TN4ozBR4-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Simon Lucas is a freelance technology journalist and consultant, with particular emphasis on the audio/video aspects of home entertainment. If it&#039;s involved in the production of sound or visual images, Simon will have written about it during the course of what will soon be a 20-year career.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before embracing the carefree life of the freelancer, Simon was editor of What Hi-Fi? magazine and&amp;nbsp;&lt;a href=&quot;http://whathifi.com/&quot; target=&quot;_blank&quot;&gt;whathifi.com&lt;/a&gt;&amp;nbsp;– a stint that lasted nearly six years and coincided with the website&amp;nbsp;becoming the planet&#039;s leading source of audio/visual buying advice for consumers. Since then, he&#039;s written for titles including (but not limited to) to Wired, Metro, the Guardian, HiFi+ and GQ, and has acted as an audio consultant for some of the&amp;nbsp;world&#039;s most high-profile consumer&amp;nbsp;electronics brands. All from what he likes to call &#039;The English Riviera&#039; but what is more commonly known as &#039;Brighton&#039;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Despite an invariably packed schedule, Simon likes to make time during the working week to publish (and invariably then hastily delete) tweets about the state of the nation (in general), the state of Aston Villa (in particular) and the state of his partner&#039;s cat via&amp;nbsp;&lt;a href=&quot;https://twitter.com/onlysimonlucas?lang=en&quot; target=&quot;_blank&quot;&gt;@OnlySimonLucas&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Zb4z4uVocfKTxTyzZ3sjv6-1920-80.jpg">
                                                            <media:credit><![CDATA[Future / Simon Lucas]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Top-down image of the Fosi Audio Merak CD player, playing a Universal Sounds of America compilation CD, with a remote control on a white background.]]></media:description>                                                            <media:text><![CDATA[Top-down image of the Fosi Audio Merak CD player, playing a Universal Sounds of America compilation CD, with a remote control on a white background.]]></media:text>
                                <media:title type="plain"><![CDATA[Top-down image of the Fosi Audio Merak CD player, playing a Universal Sounds of America compilation CD, with a remote control on a white background.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Zb4z4uVocfKTxTyzZ3sjv6-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-fosi-audio-merak-review"><span>Fosi Audio Merak: Review</span></h2><p>First things first: the Fosi Audio Merak is not as portable a CD player as you might think by looking at it. Obviously it’s small (28 x 150 x 150mm, HxWxD) and light (less than half a kilogram), but though easily picked up and moved around, it requires mains power to function. So there’s no taking it out and about — unless you also take a powerbank with you, of course. No, the Merak is designed for slotting into an external system or for private domestic listening via headphones. </p><p>It manages both of these things thanks to a selection of analog and digital outputs. On the device's front, along with some physical controls and a rather small OLED display, there’s a 3.5mm headphone socket powered by Texas Instruments TPA6120 amplification. But it’s on the rear of the machine where the bulk of the action is. </p><p>As well as a 3.5mm line-level analog output, there’s a digital optical socket — so you can connect the Fosi Audio to a system either by letting the player do all the digital-to-analog conversion work, or by bypassing its Cirrus Logic CS4313 DAC chipset altogether. There’s also a USB-C slot for powering the player, a 12v trigger output for use in an appropriate system output, a slider to turn the electronic anti-shock protection on and off, and a USB-A slot.</p><p>The USB-A connection functions in both directions. You can plug in an appropriate flash drive and play digital audio files of many types, including FLAC, MP3 and WAV. Or you can load in a CD, plug in a flash drive, let the player know what you’re up to and then rip the CD as lossless 16bit/44.1kHz WAV files.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3471px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="2eKpFXY36JaiMWHhadUYGo" name="IMG_1273" alt="Rear panel of the Fosi Audi Merak CD player, showing various USB-A, USB-C, line-out connections and on/off switch." src="https://cdn.mos.cms.futurecdn.net/2eKpFXY36JaiMWHhadUYGo-1920-80.jpg" mos="" align="middle" fullscreen="" width="3471" height="1952" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><p>‘Letting the player know what you’re up to’ can be done in different ways. Six buttons on the front handle ‘power on/off’, ‘play/pause’ and ‘skip (or scroll) forwards or backwards’. They also allow you to scroll through your options for playback (‘repeat’, ‘shuffle’ or ‘sequential’), output mode (digital, analog or headphones) and begin or end CD ripping. </p><p>Eventually you’ll commit the number and length of button presses required to access these functions — or you could just use the little remote control handset that’s supplied. It’s slightly less convoluted than the button controls, and has some numerical buttons for direct track access, too. </p><p>The volume control, though, is no kind of chore to operate. It’s a big slider along the side of the player, finished in Fosi Audio’s customary orange, and it’s one of the more gratifying physical controls I’ve encountered lately. </p><p>Loading a disc is a fully manual process. The lid, which has a nice clear porthole the exact size of a CD, lifts and then it’s just a question of pushing the disc onto the central spindle securely. The lid's hinges feel robust, and the overall standard of build and finish is more than adequate in the context of the asking price.</p><p>With a disc of <em>Fusa Riot </em>by Bobby Hughes Experience loaded and playing, the Merak doesn’t take long to establish its credentials as an energetic, positive and quite revealing listen. At the top of the frequency range, in fact, it’s about as positive as it dares to be — there’s a lot of bite and shine to treble sounds, but somehow the Fosi Audio manages to stop just short of hardness or edginess. The midrange communicates well, with the notable levels of detail retrieval making voices sound articulate and characterful. At the bottom of the frequency range there’s a reasonable amount of body and substance, but where the Merak is very assertive at the top end, it plays things fractionally safe where bass is concerned. Low frequencies could easily have a little more impact and drive, but rhythms are nevertheless expressed well thanks to good control of bass attack.</p><p>It creates a nicely defined soundstage, and is open enough to allow emphasis for spaces as well as occurrences on the stage. Focus is good, too, no matter if you’re listening through headphones or with the Fosi Audio plugged into a wider system, and there’s sufficient dynamic headroom for a fairly full account of the distance between the most and the least intense passages in a recording.</p><p>Take the digital-to-analog duties away from the Fosi Audio by plugging it into an external DAC using its digital optical output and it’s possible to calm the excitable treble response just a little, but the switch also emphasizes just how adept the Merak’s Cirrus Logic circuitry is when it comes to identifying, revealing and contextualizing even the finer details contained on a CD. </p><p>And it’s also pretty impressive when it comes to ripping CDs — getting a 16bit/44.1kHz WAV file of your music onto an external USB drive is straightforward. I endured one or two false starts in the course of my testing, but ultimately the copies are faithful and of enjoyable high quality.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3376px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="FiZb92J6jKzUW39PZB9Z6F" name="IMG_1272" alt="Orange volume control slider on the side panel of the Fosi Audio Merak CD player" src="https://cdn.mos.cms.futurecdn.net/FiZb92J6jKzUW39PZB9Z6F-1920-80.jpg" mos="" align="middle" fullscreen="" width="3376" height="1899" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><h2 class="article-body__section" id="section-fosi-audio-merak-review-price-and-release-date"><span>Fosi Audio Merak review: Price and release date</span></h2><ul><li><strong>Released on April 10, 2026</strong></li><li><strong>$139 / £129 (approx.) / about AU$199</strong></li></ul><p>The Fosi Audio Merak CD player is on sale now, and in the the United States it sells for $129. It goes for around £139 in the United Kingdom, while in Australia it will set you back around AU$199. </p><h3 class="article-body__section" id="section-fosi-audio-merak-review-value"><span>Fosi Audio Merak review: Value</span></h3><p>If you’re after a truly portable listening experience then the Fosi Audio Merak offers no kind of value whatsoever. </p><p>If, however, you want an affordable method of bringing CD-playing smarts to your existing audio system, or fancy being able to listen to your CD collection via headphones without having to plug into a full-size system, the Merak has plenty going for it before you even consider the quality of sound it’s capable of producing. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3368px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="qAmUUVrMz7HZA2a3NpNjzF" name="IMG_1271" alt="Front panel of the Fosi Audio Merak CD player, showing various buttons including power on, line-out, skip track, forwards, backwards, record, and a 3.5mm headphone jack." src="https://cdn.mos.cms.futurecdn.net/qAmUUVrMz7HZA2a3NpNjzF-1920-80.jpg" mos="" align="middle" fullscreen="" width="3368" height="1895" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><h2 class="article-body__section" id="section-should-you-buy-the-fosi-audio-merak"><span>Should you buy the Fosi Audio Merak?</span></h2><h2 id="buy-it-if-11">Buy it if...</h2><div class="product"><p><strong>You have an existing system (or headphones)</strong><br />The Fosi has plenty of digital and analog outputs and offers an easy plug-in-and-play option to insert into your current system. And it's just as simple to listen to your CD collection at home via your headphones, without bothering with your existing stack.</p></div><div class="product"><p><strong>You want to go lossless</strong><br />A USB-A connection that works both ways means you can plug in a flash drive to play digital audio files of various types – FLAC, MP3 and WAV included – or even load a CD and rip as lossless 16bit/44.1kHz WAV files. </p></div><div class="product"><p><strong>You enjoy an energetic listen</strong><br />There's real bite and shine to the top end of the frequency range, with detailed midrange, to deliver a positive and revealing sound. </p></div><h2 id="don-t-buy-it-if-2">Don't buy it if...</h2><div class="product"><p><strong>You prize portability</strong><br />Unless you bring a powerbank with you, listening to the Fosi Audio Merak on the go isn't possible. This is especially strange when you consider its small size. </p></div><div class="product"><p><strong>You like big bass</strong><br />The Fosi lacks impact and is a <em>little</em> lightweight in the low end, generally playing things just slightly too safe. </p></div><div class="product"><p><strong>You don't like using remote controls</strong><br />First things first, the remote control here is not the issue – it's easy to use and performs every function perfectly. Compare it with the clunky user interface on the front panel, though, and the differences are stark. The latter is convoluted where the remote is relatively intuitive.</p></div><h2 class="article-body__section" id="section-fosi-audio-merak-review-how-i-tested"><span>Fosi Audio Merak review: How I tested</span></h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5702px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="Px8syf5qBC54dih2NCvP7T" name="IMG_1269" alt="Top-down image of the Fosi Audio Merak CD player, with wired earphones coming out of the jack, on a white surface." src="https://cdn.mos.cms.futurecdn.net/Px8syf5qBC54dih2NCvP7T-1920-80.jpg" mos="" align="middle" fullscreen="" width="5702" height="3207" attribution="" endorsement="" class="" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future / Simon Lucas)</span></figcaption></figure><p>I've been testing audio home entertainment for nearly two decades. Anything that makes a noise, I want to listen to it.</p><p>I sat down with the Fosi Audio Merak at home – it needs mains power or a powerbank, remember – and connected it up to my existing system and my market-leading <a href="https://www.techradar.com/reviews/sennheiser-ie-900">Sennheiser IE 900 wired headphones</a>. It had the best of the best.</p><p>Over more than two weeks' testing, I listened to music of various different genres via CDs (obviously) and lossless digital audio files through an external flash drive.</p><p><a href="https://www.techradar.com/news/how-we-test">Read more about how we test</a></p><ul><li><em>First reviewed: August 2026</em></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Lavazza has made the smallest coffee machine I've ever used, and it brews delicious espresso ]]></title>
                                                                                                <dc:content><![CDATA[ <h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-one-minute-review"><span>Lavazza A Modo Mio Jolie Evo: one-minute review</span></h2><p>The Lavazza A Modo Mio Jolie Evo is an exceptionally small capsule coffee maker, which brews espresso using the company's own A Modo Mio pods. These vacuum-packed capsules are available in a wide variety of coffee types, roasts, and blends, but unlike Nespresso capsules, there are no elaborate brews with added flavors to choose from. </p><p>That's no bad thing in my opinion, because the Jolie Evo produces some of the best espresso I've had from a pod machine, and flavored coffees often tend to taste artificial.</p><p>The Jolie Evo is very reasonably priced too (considerably less than the A Modo Mio Smeg and A Modo Mio Deséa), though you'll need to pick up a standalone milk frother too (I recommend either the <a href="https://www.techradar.com/home/coffee-machines/smeg-mini-milk-frother-review">Smeg Mini Milk Frother</a> or <a href="https://www.techradar.com/home/coffee-machines/philips-baristina-milk-frother-review">Philips Baristina Milk Frother</a>) if you want to make lattes and cappuccinos.  </p><p>The controls are extremely simple, with just a single button and a large lever. However, bear in mind that there's no timer, so you'll need to manually tap the button to stop the flow once the machine has dispensed the right amount of coffee.</p><p>Overall, it's an excellent compact espresso machine. For me, the only real drawback is that the plastic pods aren't particularly easy to recycle. They can only be dropped off at designated collection points, which can be scarce outside big cities. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3574px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="bqc9QjbMN5L5DYrRhi9Vrf" name="IMG_20260804_110422" alt="Espresso made using Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/bqc9QjbMN5L5DYrRhi9Vrf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3574" height="2010" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-specifications"><span>Lavazza A Modo Mio Jolie Evo: specifications</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Name</strong></p></td><td  ><p>Lavazza A Modo Mio Jolie Evo</p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Capsule coffee maker</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (W x H x D)</strong></p></td><td  ><p>4.9 x 8.3 x 13 inches / 124 x 210 x 330mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>5.7lbs / 2.6kg</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank capacity</strong></p></td><td  ><p>20.3oz / 600ml</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-price-and-availability"><span>Lavazza A Modo Mio Jolie Evo: price and availability</span></h2><ul><li><strong>List price £99 / AU$129 (about $190)</strong></li><li><strong>Widely available in UK and Australia</strong></li><li><strong>Listed on Lavazza's US site, but not available at the time of writing</strong></li></ul><p>The Lavazza A Modo Mio Jolie Evo has a list price of £99 / AU$129, which is about $133, but at the time of writing the machine doesn't seem to be available to actually buy in the US — even though it's listed on Lavazza's site. So it may become available in the future.</p><p>If you're in the UK, you can <a href="https://www.lavazza.co.uk/en/coffee-subscription/coffee-machine.startsubscription.18001423" target="_blank">get the coffee maker for £49</a> if you subscribe to Lavazza's coffee capsule delivery service. </p><p>Even at full price, that's very reasonable for a good quality capsule coffee maker. For comparison, the <a href="https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-smeg-review">Lavazza A Modo Mio Smeg</a> is £249 / AU$349 (about $350), while the <a href="https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-desea-review">Lavazza A Modo Mio Deséa</a> is £249 / AU$349 (about $330) — though the latter machine also has a built-in milk-frothing system.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3601px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="X7mLU2Lw7oRjentfRaK4Gf" name="IMG_20260804_105958" alt="Lavazza Jolie Evo coffee maker front panel with logo" src="https://cdn.mos.cms.futurecdn.net/X7mLU2Lw7oRjentfRaK4Gf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3601" height="2025" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you want to make lattes and cappuccinos with the Jolie Evo, you'll need a standalone milk frother like the <a href="https://www.lavazza.co.uk/en/milk-frother/milkeasy-plus-frother" target="_blank">Lavazza MilkEasy Plus</a>, which is priced at £79 / AU$119 (about $150) — or the <a href="https://www.techradar.com/home/coffee-machines/smeg-mini-milk-frother-review">Smeg Mini Milk Frother</a> or <a href="https://www.techradar.com/home/coffee-machines/philips-baristina-milk-frother-review">Philips Baristina Milk Frother</a> I mentioned earlier.</p><ul><li><strong>Value score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-design"><span>Lavazza A Modo Mio Jolie Evo: design</span></h2><ul><li><strong>Ideal for small kitchens</strong></li><li><strong>Only two controls (lever and button)</strong></li><li><strong>Lever is ergonomic and easy to use</strong></li></ul><p>The Lavazza A Modo Mio Jolie Evo is easily one of the smallest coffee makers I’ve tested, measuring a mere 4.9 x 8.3 x 13 inches / 124 x 210 x 330mm (W x H x D). That’s even tinier than the diminutive Nespresso Vertuo Pop, which is 5.3 x 9.8 x 16.7 inches / 136 x 250 x  426mm. It’s ideal for slotting into small spaces, and you can even route the power cable right or left underneath the machine if you need it to sit against a wall.</p><p>The Lavazza machine looks classier than its Nespresso counterpart as well, with a smart matte finish and a large chrome handle on top. Pulling this handle up opens a slot on top of the machine. so you can slide a coffee pod inside.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xApffFE58t3e9HSwsUzYPf" name="IMG_20260804_110155" alt="Person inserting coffee pod into Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/xApffFE58t3e9HSwsUzYPf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Pushing it back down closes the drawer and pierces the pod, and pulling it up a second time will drop the used capsule into a small bin behind the Jolie Evo’s drip tray. The bin has a grille at the bottom that allows the pods to drain so they’re dry when you remove them for recycling, which is a thoughtful touch.</p><p>The large lever is easy to grip and requires barely any force to move, which makes this a particularly good option for people with limited strength or mobility in their hands.</p><p>The drip tray has a plastic grate that can be removed for easy cleaning, and is just the right height for an espresso cup. A standard size cup or mug will fit neatly under the dispenser with the drip tray detached.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uFHK5jztwjgRvoVWPqYp2g" name="IMG_20260804_110139" alt="Person raising handle of Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/uFHK5jztwjgRvoVWPqYp2g-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Other than the handle, there is just one control on the Jolie Evi: a button on top of the machine, with a white light to indicate the machine’s current status: blinking means heating, and white means ready to brew. </p><p>It’s available in black and white in Australia, with a gray option also offered in the UK. It was sold in green and red too when it launched in the US.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-performance"><span>Lavazza A Modo Mio Jolie Evo: performance</span></h3><ul><li><strong>Extremely simple to use, but there's no timer for the coffee dispenser</strong></li><li><strong>It makes delicious espresso in moments</strong></li><li><strong>Its pods can be hard to recycle compared to Nespresso aluminum ones</strong></li></ul><p>What makes the Jolie Evo different from all other capsule coffee makers I’ve tested to date is its lack of a timer for brewing different sized drinks. Once you’ve pressed its single button, the little machine will continue dispensing coffee (or hot water, if there’s no pod inside) until you either tap the button again or the tank is empty.</p><p>This isn’t ideal if you want to leave your coffee maker to handle itself while you’re preparing the rest of your breakfast, but making a double espresso takes less than a minute so it’s no real hardship. </p><p>I would recommend using a measuring cup as your recepticle, though, at least until you’ve got your eye in, because it’s easy to under or over-estimate the output. You could use a coffee scale to a perfect measure, but it would be overkill; this entry-level machine makes a very good espresso, but it’s not intended for real aficionados.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3883px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="w5x2JMQZ8eYBMY4K7YMB5g" name="IMG_20260804_110315" alt="Lavazza Jolie Evo coffee maker dispensing espresso" src="https://cdn.mos.cms.futurecdn.net/w5x2JMQZ8eYBMY4K7YMB5g-1920-80.jpg" mos="" align="middle" fullscreen="" width="3883" height="2184" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It uses Lavazza’s own A Modo Mio capsules, which are excellent value compared to most coffee pods. Different types command different prices, but you can pick up 80 Qualità Rossa pods <a href="https://www.maxicoffee.com/en-gb/lavazza-qualita-rossa-a-modo-mio-80-pods-p-221884.html">direct from Lavazza </a>for £24.50 (about $30 / AU$50). That’s just over 30p per drink, compared to 49p for the cheapest Nespresso Vertuo pods. </p><p>Unlike Nespresso, the Modo Mio selection doesn’t include elaborate flavored drinks; there are various beans, blends and roasts to choose from in Lavazza’s store, but each pod contains only ground coffee with no extras. That's no bad thing, in my opinion — coffee capsules with added flavors can taste unpleasantly artificial.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4086px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="AKr84iYqPqoNuJDcKE2yjf" name="IMG_20260804_111738" alt="Lavazza Jolie Evo coffee maker dispensing water to make americano" src="https://cdn.mos.cms.futurecdn.net/AKr84iYqPqoNuJDcKE2yjf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4086" height="2298" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I tested the Jolie Evo with three of Lavazza’s coffees: Qualità Rossa, Passionale, and Qualità Oro. Each comes in a box of 16, and is marked with an intensity score out of 12 to give you an idea of what to expect. The first is a blend of robusta and arabica beans, while the other two are 100% arabica. </p><p>My personal favorite was the Qualità Oro, which produced one of the best-tasting espressos I’ve had from a capsule machine and is described as “Sweet and delicate taste, with an intense and fragrant aroma”. </p><p>It goes particularly well with milk in a white americano or (if you also pick up a milk frother) a creamy latte. </p><p>The problem with these pods, delicious though they are, is that they can be difficult to recycle. Nespresso pods are made entirely from aluminum, which is relatively easy to process once the coffee grounds are removed, and there’s almost certain to be a location nearby where you can drop off the used capsules. If not, you can mail them off for recycling with a pre-paid bag. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ByynCvLFmK4T5yRhzFRz2f" name="IMG_20260804_112446" alt="Used coffee pods in Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/ByynCvLFmK4T5yRhzFRz2f-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>By contrast, Lavazza A Modo Mio pods are mostly plastic and can be recycled in the UK through the company’s partnership with Terracycle, but collection points are few and far between. </p><p>If there’s nowhere to drop off your pods, your only option is to start your own collection point, accepting pods from other people and sending them for processing yourself. Individuals can’t send their pods in the mail. </p><p>South England is relatively well-served, but at the time of writing there are only four drop-off points in Scotland, and none at all in Wales or Northern Ireland.</p><ul><li><strong>Performance score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-lavazza-a-modo-mio-jolie-evo"><span>Should you buy the Lavazza A Modo Mio Jolie Evo?</span></h3><div ><table><caption>Lavazza A Modo Mio Jolie Evo Score Card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The most affordable A Modo Mio coffee maker, though not currently available in the US.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Stylish and super compact, with ergonomically designed controls.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Brews delicious espresso, but lacks a timer to stop flow, and pods can be hard to recycle.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-12">Buy it if</h2><div class="product"><p><strong>You have a small kitchen </strong><br />This is the most compact coffee maker I've tested to date, and the fact its cable can be routed to the right or left means you can push it right up against a wall if you need to.</p></div><div class="product"><p><strong>You have limited dexterity in your hands</strong><br />The large lever handle requires virtually no effort to push and pull, and there's just one button to worry about. All removable pieces are easy to detach for cleaning as well.</p></div><h2 id="don-t-buy-it-if-3">Don't buy it if</h2><div class="product"><p><strong>You want elaborate flavored coffees</strong><br />A Modo Mio capsules are full of nothing but unadulterated ground coffee, so if you want something fancier you'll need to add your own syrup.</p></div><div class="product"><p><strong>You want easily recyclable coffee pods</strong><br />A Modo Mio capsules are plastic and can only be recycled if you drop them at a designated collection point. You can't send them in the mail for processing. </p></div><h3 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-also-consider"><span>Lavazza A Modo Mio Jolie Evo: also consider</span></h3><p>If you're not sure whether the Jolie Evo is the right espresso machine for you, here are two others to think about.</p><div class="product"><a data-dimension112="06ff30c2-90ba-11f1-99a1-7f6ff01ee54b" data-action="Deal Block" data-label="Read our full Lavazza A Modo Mio Deséa review" data-dimension48="Read our full Lavazza A Modo Mio Deséa review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:726px;"><p class="vanilla-image-block" style="padding-top:123.97%;"><img id="RQtpD2gxkx24v8C7gjNiVi" name="amodomiodesea" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/RQtpD2gxkx24v8C7gjNiVi-1920-80.webp" mos="" align="middle" fullscreen="" width="726" height="900" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Lavazza A Modo Mio Deséa</strong><br />This is Lavazza's most advanced A Modo Mio machine, with its own built-in milk frother, though it's only compatible with Lavazza's own glass mug.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-desea-review" data-dimension112="06ff30c2-90ba-11f1-99a1-7f6ff01ee54b" data-action="Deal Block" data-label="Read our full Lavazza A Modo Mio Deséa review" data-dimension48="Read our full Lavazza A Modo Mio Deséa review" data-dimension25=""><strong>Lavazza A Modo Mio Deséa review</strong></a></p></div><div class="product"><a data-dimension112="06ff3130-90ba-11f1-a922-8b98043aff82" data-action="Deal Block" data-label="Read our full Bosch Tassimo Finesse Friendly review" data-dimension48="Read our full Bosch Tassimo Finesse Friendly review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NP8xR2VcVYc3StQCDFH6c8" name="Tassimo by Bosch Finesse deal block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NP8xR2VcVYc3StQCDFH6c8-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Bosch Tassimo Finesse Friendly</strong><br />Just as easy to use as the Jolie Evo, and affordably priced too. There's a huge range of Tassimo pods to choose from, though they can get pricey — particularly ones for milky drinks that require two capsules each.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/coffee-machines/bosch-tassimo-finesse-friendly-review" data-dimension112="06ff3130-90ba-11f1-a922-8b98043aff82" data-action="Deal Block" data-label="Read our full Bosch Tassimo Finesse Friendly review" data-dimension48="Read our full Bosch Tassimo Finesse Friendly review" data-dimension25=""><strong>Bosch Tassimo Finesse Friendly review</strong></a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-lavazza-a-modo-mio-jolie-evo"><span>How I tested the Lavazza A Modo Mio Jolie Evo</span></h3><p>I used the Lavazza A Modo Mio Jolie Evo in place of my usual espresso machine for two weeks. I used three different types of A Modo Mio capsules (Qualità Rossa, Passionale, and Qualità Oro), drinking it neat as an espresso, and using the Jolie Evo to add extra hot water to make an americano.</p><p>I set up and cleaned the machine following the directions in the instruction manual, and allowed the components to air-dry before reassembly. </p><ul><li>For more details, see <a href="https://www.techradar.com/news/how-we-test">how TechRadar tests, reviews, and rates products.</a></li><li>First reviewed: August 2026</li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-jolie-evo-review</link>
                                                                            <description>
                            <![CDATA[ Lavazza's A Modo Mio Jolie Evo is a super compact espresso machine, and very reasonably priced, but its plastic capsules are harder to recycle than I'd like. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">mZBbpgjRetzM2sVLxRoteG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vFJRtNzQ9ydR6cgWDHXpDg-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 05 Aug 2026 12:53:13 +0000</pubDate>                                                                                                                                <updated>Wed, 05 Aug 2026 13:11:07 +0000</updated>
                                                                                                                                            <category><![CDATA[Coffee Machines]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                <author><![CDATA[ catherine.ellis@futurenet.com (Cat Ellis) ]]></author>                    <dc:creator><![CDATA[ Cat Ellis ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/gxZz6rCoNR6sXhqL34MvML-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Cat is TechRadar&#039;s Homes Editor, covering smart home tech, kitchen appliances, vacuums, haircare and more. She&#039;s been a tech journalist for 15 years, having worked on print magazines including PC Plus and PC Format, and is a&lt;a href=&quot;https://sca.coffee/&quot;&gt; &lt;u&gt;Speciality Coffee Association&lt;/u&gt;&lt;/a&gt; (SCA) certified barista. Whether you want to invest in some smart lights, find your ideal hair styler, or pick the espresso machine of your dreams, she&#039;s the right person to help.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vFJRtNzQ9ydR6cgWDHXpDg-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lavazza Jolie Evo coffee maker on kitchen counter with espresso cups and saucers]]></media:description>                                                            <media:text><![CDATA[Lavazza Jolie Evo coffee maker on kitchen counter with espresso cups and saucers]]></media:text>
                                <media:title type="plain"><![CDATA[Lavazza Jolie Evo coffee maker on kitchen counter with espresso cups and saucers]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vFJRtNzQ9ydR6cgWDHXpDg-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-one-minute-review"><span>Lavazza A Modo Mio Jolie Evo: one-minute review</span></h2><p>The Lavazza A Modo Mio Jolie Evo is an exceptionally small capsule coffee maker, which brews espresso using the company's own A Modo Mio pods. These vacuum-packed capsules are available in a wide variety of coffee types, roasts, and blends, but unlike Nespresso capsules, there are no elaborate brews with added flavors to choose from. </p><p>That's no bad thing in my opinion, because the Jolie Evo produces some of the best espresso I've had from a pod machine, and flavored coffees often tend to taste artificial.</p><p>The Jolie Evo is very reasonably priced too (considerably less than the A Modo Mio Smeg and A Modo Mio Deséa), though you'll need to pick up a standalone milk frother too (I recommend either the <a href="https://www.techradar.com/home/coffee-machines/smeg-mini-milk-frother-review">Smeg Mini Milk Frother</a> or <a href="https://www.techradar.com/home/coffee-machines/philips-baristina-milk-frother-review">Philips Baristina Milk Frother</a>) if you want to make lattes and cappuccinos.  </p><p>The controls are extremely simple, with just a single button and a large lever. However, bear in mind that there's no timer, so you'll need to manually tap the button to stop the flow once the machine has dispensed the right amount of coffee.</p><p>Overall, it's an excellent compact espresso machine. For me, the only real drawback is that the plastic pods aren't particularly easy to recycle. They can only be dropped off at designated collection points, which can be scarce outside big cities. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3574px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="bqc9QjbMN5L5DYrRhi9Vrf" name="IMG_20260804_110422" alt="Espresso made using Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/bqc9QjbMN5L5DYrRhi9Vrf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3574" height="2010" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-specifications"><span>Lavazza A Modo Mio Jolie Evo: specifications</span></h2><div ><table><tbody><tr><td class="firstcol " ><p><strong>Name</strong></p></td><td  ><p>Lavazza A Modo Mio Jolie Evo</p></td></tr><tr><td class="firstcol " ><p><strong>Type</strong></p></td><td  ><p>Capsule coffee maker</p></td></tr><tr><td class="firstcol " ><p><strong>Dimensions (W x H x D)</strong></p></td><td  ><p>4.9 x 8.3 x 13 inches / 124 x 210 x 330mm</p></td></tr><tr><td class="firstcol " ><p><strong>Weight</strong></p></td><td  ><p>5.7lbs / 2.6kg</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank capacity</strong></p></td><td  ><p>20.3oz / 600ml</p></td></tr></tbody></table></div><h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-price-and-availability"><span>Lavazza A Modo Mio Jolie Evo: price and availability</span></h2><ul><li><strong>List price £99 / AU$129 (about $190)</strong></li><li><strong>Widely available in UK and Australia</strong></li><li><strong>Listed on Lavazza's US site, but not available at the time of writing</strong></li></ul><p>The Lavazza A Modo Mio Jolie Evo has a list price of £99 / AU$129, which is about $133, but at the time of writing the machine doesn't seem to be available to actually buy in the US — even though it's listed on Lavazza's site. So it may become available in the future.</p><p>If you're in the UK, you can <a href="https://www.lavazza.co.uk/en/coffee-subscription/coffee-machine.startsubscription.18001423" target="_blank">get the coffee maker for £49</a> if you subscribe to Lavazza's coffee capsule delivery service. </p><p>Even at full price, that's very reasonable for a good quality capsule coffee maker. For comparison, the <a href="https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-smeg-review">Lavazza A Modo Mio Smeg</a> is £249 / AU$349 (about $350), while the <a href="https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-desea-review">Lavazza A Modo Mio Deséa</a> is £249 / AU$349 (about $330) — though the latter machine also has a built-in milk-frothing system.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3601px;"><p class="vanilla-image-block" style="padding-top:56.23%;"><img id="X7mLU2Lw7oRjentfRaK4Gf" name="IMG_20260804_105958" alt="Lavazza Jolie Evo coffee maker front panel with logo" src="https://cdn.mos.cms.futurecdn.net/X7mLU2Lw7oRjentfRaK4Gf-1920-80.jpg" mos="" align="middle" fullscreen="" width="3601" height="2025" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you want to make lattes and cappuccinos with the Jolie Evo, you'll need a standalone milk frother like the <a href="https://www.lavazza.co.uk/en/milk-frother/milkeasy-plus-frother" target="_blank">Lavazza MilkEasy Plus</a>, which is priced at £79 / AU$119 (about $150) — or the <a href="https://www.techradar.com/home/coffee-machines/smeg-mini-milk-frother-review">Smeg Mini Milk Frother</a> or <a href="https://www.techradar.com/home/coffee-machines/philips-baristina-milk-frother-review">Philips Baristina Milk Frother</a> I mentioned earlier.</p><ul><li><strong>Value score: 4.5/5</strong></li></ul><h2 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-design"><span>Lavazza A Modo Mio Jolie Evo: design</span></h2><ul><li><strong>Ideal for small kitchens</strong></li><li><strong>Only two controls (lever and button)</strong></li><li><strong>Lever is ergonomic and easy to use</strong></li></ul><p>The Lavazza A Modo Mio Jolie Evo is easily one of the smallest coffee makers I’ve tested, measuring a mere 4.9 x 8.3 x 13 inches / 124 x 210 x 330mm (W x H x D). That’s even tinier than the diminutive Nespresso Vertuo Pop, which is 5.3 x 9.8 x 16.7 inches / 136 x 250 x  426mm. It’s ideal for slotting into small spaces, and you can even route the power cable right or left underneath the machine if you need it to sit against a wall.</p><p>The Lavazza machine looks classier than its Nespresso counterpart as well, with a smart matte finish and a large chrome handle on top. Pulling this handle up opens a slot on top of the machine. so you can slide a coffee pod inside.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xApffFE58t3e9HSwsUzYPf" name="IMG_20260804_110155" alt="Person inserting coffee pod into Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/xApffFE58t3e9HSwsUzYPf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Pushing it back down closes the drawer and pierces the pod, and pulling it up a second time will drop the used capsule into a small bin behind the Jolie Evo’s drip tray. The bin has a grille at the bottom that allows the pods to drain so they’re dry when you remove them for recycling, which is a thoughtful touch.</p><p>The large lever is easy to grip and requires barely any force to move, which makes this a particularly good option for people with limited strength or mobility in their hands.</p><p>The drip tray has a plastic grate that can be removed for easy cleaning, and is just the right height for an espresso cup. A standard size cup or mug will fit neatly under the dispenser with the drip tray detached.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uFHK5jztwjgRvoVWPqYp2g" name="IMG_20260804_110139" alt="Person raising handle of Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/uFHK5jztwjgRvoVWPqYp2g-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Other than the handle, there is just one control on the Jolie Evi: a button on top of the machine, with a white light to indicate the machine’s current status: blinking means heating, and white means ready to brew. </p><p>It’s available in black and white in Australia, with a gray option also offered in the UK. It was sold in green and red too when it launched in the US.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-performance"><span>Lavazza A Modo Mio Jolie Evo: performance</span></h3><ul><li><strong>Extremely simple to use, but there's no timer for the coffee dispenser</strong></li><li><strong>It makes delicious espresso in moments</strong></li><li><strong>Its pods can be hard to recycle compared to Nespresso aluminum ones</strong></li></ul><p>What makes the Jolie Evo different from all other capsule coffee makers I’ve tested to date is its lack of a timer for brewing different sized drinks. Once you’ve pressed its single button, the little machine will continue dispensing coffee (or hot water, if there’s no pod inside) until you either tap the button again or the tank is empty.</p><p>This isn’t ideal if you want to leave your coffee maker to handle itself while you’re preparing the rest of your breakfast, but making a double espresso takes less than a minute so it’s no real hardship. </p><p>I would recommend using a measuring cup as your recepticle, though, at least until you’ve got your eye in, because it’s easy to under or over-estimate the output. You could use a coffee scale to a perfect measure, but it would be overkill; this entry-level machine makes a very good espresso, but it’s not intended for real aficionados.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3883px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="w5x2JMQZ8eYBMY4K7YMB5g" name="IMG_20260804_110315" alt="Lavazza Jolie Evo coffee maker dispensing espresso" src="https://cdn.mos.cms.futurecdn.net/w5x2JMQZ8eYBMY4K7YMB5g-1920-80.jpg" mos="" align="middle" fullscreen="" width="3883" height="2184" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It uses Lavazza’s own A Modo Mio capsules, which are excellent value compared to most coffee pods. Different types command different prices, but you can pick up 80 Qualità Rossa pods <a href="https://www.maxicoffee.com/en-gb/lavazza-qualita-rossa-a-modo-mio-80-pods-p-221884.html">direct from Lavazza </a>for £24.50 (about $30 / AU$50). That’s just over 30p per drink, compared to 49p for the cheapest Nespresso Vertuo pods. </p><p>Unlike Nespresso, the Modo Mio selection doesn’t include elaborate flavored drinks; there are various beans, blends and roasts to choose from in Lavazza’s store, but each pod contains only ground coffee with no extras. That's no bad thing, in my opinion — coffee capsules with added flavors can taste unpleasantly artificial.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4086px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="AKr84iYqPqoNuJDcKE2yjf" name="IMG_20260804_111738" alt="Lavazza Jolie Evo coffee maker dispensing water to make americano" src="https://cdn.mos.cms.futurecdn.net/AKr84iYqPqoNuJDcKE2yjf-1920-80.jpg" mos="" align="middle" fullscreen="" width="4086" height="2298" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I tested the Jolie Evo with three of Lavazza’s coffees: Qualità Rossa, Passionale, and Qualità Oro. Each comes in a box of 16, and is marked with an intensity score out of 12 to give you an idea of what to expect. The first is a blend of robusta and arabica beans, while the other two are 100% arabica. </p><p>My personal favorite was the Qualità Oro, which produced one of the best-tasting espressos I’ve had from a capsule machine and is described as “Sweet and delicate taste, with an intense and fragrant aroma”. </p><p>It goes particularly well with milk in a white americano or (if you also pick up a milk frother) a creamy latte. </p><p>The problem with these pods, delicious though they are, is that they can be difficult to recycle. Nespresso pods are made entirely from aluminum, which is relatively easy to process once the coffee grounds are removed, and there’s almost certain to be a location nearby where you can drop off the used capsules. If not, you can mail them off for recycling with a pre-paid bag. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ByynCvLFmK4T5yRhzFRz2f" name="IMG_20260804_112446" alt="Used coffee pods in Lavazza Jolie Evo coffee maker" src="https://cdn.mos.cms.futurecdn.net/ByynCvLFmK4T5yRhzFRz2f-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>By contrast, Lavazza A Modo Mio pods are mostly plastic and can be recycled in the UK through the company’s partnership with Terracycle, but collection points are few and far between. </p><p>If there’s nowhere to drop off your pods, your only option is to start your own collection point, accepting pods from other people and sending them for processing yourself. Individuals can’t send their pods in the mail. </p><p>South England is relatively well-served, but at the time of writing there are only four drop-off points in Scotland, and none at all in Wales or Northern Ireland.</p><ul><li><strong>Performance score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-lavazza-a-modo-mio-jolie-evo"><span>Should you buy the Lavazza A Modo Mio Jolie Evo?</span></h3><div ><table><caption>Lavazza A Modo Mio Jolie Evo Score Card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The most affordable A Modo Mio coffee maker, though not currently available in the US.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Stylish and super compact, with ergonomically designed controls.</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Brews delicious espresso, but lacks a timer to stop flow, and pods can be hard to recycle.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-12">Buy it if</h2><div class="product"><p><strong>You have a small kitchen </strong><br />This is the most compact coffee maker I've tested to date, and the fact its cable can be routed to the right or left means you can push it right up against a wall if you need to.</p></div><div class="product"><p><strong>You have limited dexterity in your hands</strong><br />The large lever handle requires virtually no effort to push and pull, and there's just one button to worry about. All removable pieces are easy to detach for cleaning as well.</p></div><h2 id="don-t-buy-it-if-3">Don't buy it if</h2><div class="product"><p><strong>You want elaborate flavored coffees</strong><br />A Modo Mio capsules are full of nothing but unadulterated ground coffee, so if you want something fancier you'll need to add your own syrup.</p></div><div class="product"><p><strong>You want easily recyclable coffee pods</strong><br />A Modo Mio capsules are plastic and can only be recycled if you drop them at a designated collection point. You can't send them in the mail for processing. </p></div><h3 class="article-body__section" id="section-lavazza-a-modo-mio-jolie-evo-also-consider"><span>Lavazza A Modo Mio Jolie Evo: also consider</span></h3><p>If you're not sure whether the Jolie Evo is the right espresso machine for you, here are two others to think about.</p><div class="product"><a data-dimension112="06ff30c2-90ba-11f1-99a1-7f6ff01ee54b" data-action="Deal Block" data-label="Read our full Lavazza A Modo Mio Deséa review" data-dimension48="Read our full Lavazza A Modo Mio Deséa review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:726px;"><p class="vanilla-image-block" style="padding-top:123.97%;"><img id="RQtpD2gxkx24v8C7gjNiVi" name="amodomiodesea" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/RQtpD2gxkx24v8C7gjNiVi-1920-80.webp" mos="" align="middle" fullscreen="" width="726" height="900" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Lavazza A Modo Mio Deséa</strong><br />This is Lavazza's most advanced A Modo Mio machine, with its own built-in milk frother, though it's only compatible with Lavazza's own glass mug.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/coffee-machines/lavazza-a-modo-mio-desea-review" data-dimension112="06ff30c2-90ba-11f1-99a1-7f6ff01ee54b" data-action="Deal Block" data-label="Read our full Lavazza A Modo Mio Deséa review" data-dimension48="Read our full Lavazza A Modo Mio Deséa review" data-dimension25=""><strong>Lavazza A Modo Mio Deséa review</strong></a></p></div><div class="product"><a data-dimension112="06ff3130-90ba-11f1-a922-8b98043aff82" data-action="Deal Block" data-label="Read our full Bosch Tassimo Finesse Friendly review" data-dimension48="Read our full Bosch Tassimo Finesse Friendly review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="NP8xR2VcVYc3StQCDFH6c8" name="Tassimo by Bosch Finesse deal block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NP8xR2VcVYc3StQCDFH6c8-1920-80.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Bosch Tassimo Finesse Friendly</strong><br />Just as easy to use as the Jolie Evo, and affordably priced too. There's a huge range of Tassimo pods to choose from, though they can get pricey — particularly ones for milky drinks that require two capsules each.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/coffee-machines/bosch-tassimo-finesse-friendly-review" data-dimension112="06ff3130-90ba-11f1-a922-8b98043aff82" data-action="Deal Block" data-label="Read our full Bosch Tassimo Finesse Friendly review" data-dimension48="Read our full Bosch Tassimo Finesse Friendly review" data-dimension25=""><strong>Bosch Tassimo Finesse Friendly review</strong></a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-lavazza-a-modo-mio-jolie-evo"><span>How I tested the Lavazza A Modo Mio Jolie Evo</span></h3><p>I used the Lavazza A Modo Mio Jolie Evo in place of my usual espresso machine for two weeks. I used three different types of A Modo Mio capsules (Qualità Rossa, Passionale, and Qualità Oro), drinking it neat as an espresso, and using the Jolie Evo to add extra hot water to make an americano.</p><p>I set up and cleaned the machine following the directions in the instruction manual, and allowed the components to air-dry before reassembly. </p><ul><li>For more details, see <a href="https://www.techradar.com/news/how-we-test">how TechRadar tests, reviews, and rates products.</a></li><li>First reviewed: August 2026</li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the Xiaomi Robot Vacuum X20 Max and it’s a great all-round performer — when it actually works ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-one-minute-review"><span>Xiaomi Robot Vacuum X20 Max review: one-minute review</span></h3><p>The Xiaomi Robot Vacuum X20 Max seems like a slam dunk in the robot vacuum space. Positioned right in between the budget and upper mid range sections of the market, it delivers strong vacuum and mopping performance that make it capable of tackling a wide variety of messes in your home.</p><p>With LiDAR technology, its mapping is excellent and the robot vacuum does a great job of navigating unexpected obstacles that it might encounter during a clean. The design isn't the most exciting, though it still has a good range of features like an extendable mop arm and automatic carpet detection.</p><p>The dock is large, which might make it tricky to fit into smaller homes, but it's pretty capable as well, with hot water washing and air drying capabilities to keep the mop pads clean between uses.</p><p>It's all underpinned by a competent app that's easy to use and offers key functions such as being able to schedule cleans, restricting the robot vacuum to certain rooms, and allowing you to customize the vacuuming power and amount of water used by the mop.</p><p>The elephant in the room is that my unit developed a fault after a year of testing, occasionally spilling water during a mop pad clean. It's unfortunate and, even though it doesn't seem widespread, makes this model difficult to recommend unreservedly. </p><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-price-range-availability"><span>Xiaomi Robot Vacuum X20 Max review: price, range &amp; availability</span></h3><ul><li><strong>List price $999.99 / £499.99 / AU$1,199</strong></li><li><strong>Launched late 2024</strong></li><li><strong>No longer available in Australia</strong></li><li><strong>Limited stock in the US</strong></li></ul><p>The Xiaomi Robot Vacuum X20 Max has a list price of $999.99 / £499.99 / AU$1,199, and is readily available via the brand’s website in the UK. It often receives discounts too, taking the price down by £100 or so around major sales events. At this price it sits neatly between the budget and upper mid range price brackets, coming in much more expensive than under $300 / £300 / AU$500  favorites like the Roborock Q7 M5 but cheaper than the likes of the Eufy X10 Pro Omni, which goes for $799.99 / £799 / AU$1,699.95.</p><p>That latter model is a good point of comparison here, as it also features mop and similar LiDAR sensor setup. With this in mind, the Xiaomi Robot Vacuum X20 Max is very solid value - especially if you get it at that reduced price point. Accessories like replacement brushes, dust bags, and mop pads are all available via the Xiaomi website at pretty reasonable prices too.</p><p>Unfortunately, this model seems a lot harder to come by in the US. You can find it on Amazon, but it goes for an eye-watering $999.99 and stock appears limited. At this price it’s significantly worse value and you would be better off spending less on an alternative. Its list price is AU$1,199 in Australia, but it appears to no longer be available either through Xiaomi's own store, or Amazon.</p><ul><li><strong>Value for money score: 3/5</strong></li></ul><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-specs"><span>Xiaomi Robot Vacuum X20 Max specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Suction</strong></p></td><td  ><p>8,000Pa</p></td></tr><tr><td class="firstcol " ><p><strong>Mopping</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop type</strong></p></td><td  ><p>Dual rotating discs</p></td></tr><tr><td class="firstcol " ><p><strong>Robot size (W x D)</strong></p></td><td  ><p>13.78 x 3.82 inches / 350 x 97mm</p></td></tr><tr><td class="firstcol " ><p><strong>Robot height</strong></p></td><td  ><p>~3.82 inches / ~97mm</p></td></tr><tr><td class="firstcol " ><p><strong>Dock dimensions (W x D x H)</strong></p></td><td  ><p>13.39 x 16.54 x 22.17 inches / 340 x 420 x 563mm</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (onboard)</strong></p></td><td  ><p>15.22oz / 450ml</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (onboard)</strong></p></td><td  ><p>Not stated</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (base)</strong></p></td><td  ><p>84.5oz / 2.5l</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (base)</strong></p></td><td  ><p>135.3oz / 4l</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty dust</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty / refill water</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop pad cleaning:</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Wi-Fi control</strong></p></td><td  ><p>Yes</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-design"><span>Xiaomi Robot Vacuum X20 Max: design</span></h3><ul><li><strong>Raised LiDAR puck</strong></li><li><strong>Extendable mop arm</strong></li></ul><p>The Xiaomi Robot Vacuum X20 Max isn’t pushing any boundaries when it comes to its overall design, but honestly that’s not such a bad thing.</p><p>It looks like your average robot vacuum, which is to say a big plastic disc with a chunky bumper at the front and a whole host of sensors. The most prominent of these is a big LiDAR sensor that sits in a little raised puck on the top, though there are others designed to spot obstacles or prevent the vacuum from falling off ledges.</p><p>Despite the basic look, the Xiaomi Robot Vacuum X20 Max has a bunch of useful features including two mop pads, one of which can be extended on a little arm for edge cleaning. The Xiaomi Robot Vacuum X20 Max is also capable of detecting which kind of surface it’s on, raising the mop pads when it goes over carpet to prevent any accidental stains.</p><p>Coming in at13.39 x 16.54 x 22.17 inches / 340 x 420 x 563mm, the docking station that it comes with is absolutely ginormous which could make it awkward to fit in smaller homes, but there are some good reasons for this size. Firstly, you’re getting a large 135.3oz / 4l clean water tank (removed for filling by simply popping up the lid on top of the dock) and a slightly smaller but still sizable 128.5oz / 3.8l tank for dirty water storage.</p><p>Xiaomi says that this is more than enough water to clean 2,152.8 square feet / 200 square meters on a single fill, and while my testing area was considerably smaller, I can say that it didn’t need refilling across multiple cleans.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WfH9sjV2pP7jKEcEasPaTb" name="IMG_20251103_132432" alt="The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor." src="https://cdn.mos.cms.futurecdn.net/WfH9sjV2pP7jKEcEasPaTb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The dock also has a hot water system to help wash both mop pads at 131F / 55C - a temperature that Xiaomi claims reduces odours more effectively. It dries the mop pads using hot air, a process that takes a few hours and produces a small level of sound akin to a desk fan.</p><p>There’s also a generous 84.5oz / 2.5l dust bag, which Xiaomi says only needs emptying once every 75 days in a three-person household with one pet. This seems like a very generous estimate to me, and your mileage will vary depending on your specific level of household mess. This bag size is on par with much of the competition, such as the aforementioned Eufy X10 Pro Omni, so you can expect similar performance to those models.</p><p>One feature that I particularly appreciate is the ability to remove parts of the dock for cleaning, including the little tray where the vacuum sits while charging. This isn't something that you will need to do regularly, but my previous robot vacuum tracked a decent layer of grime in its dock over the years and was comparatively pretty tricky to clean.</p><p>My only real complaint from a design standpoint is the vacuum’s incessant need to narrate what it's doing. By default it frequently declares 'start to dry the mop pad' and similar phrases in a loud, annoying voice. It's disruptive, though mercifully can be turned off in the app.</p><ul><li><strong>Design score: 4/5 </strong></li></ul><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-performance"><span>Xiaomi Robot Vacuum X20 Max review: performance</span></h3><ul><li><strong>Good navigation</strong></li><li><strong>Deals with multiple surfaces well</strong></li><li><strong>Base station pump developed issues</strong></li></ul><p>I've been using the Xiaomi Robot Vacuum X20 Max for a year now, and can say that it handles most daily cleaning tasks well. Its navigation capabilities are excellent and map that it generated of my cleaning area was spot on. I have the base station in the corner of an L-shape hallway and the robot never struggles to find it, even when it's been cleaning the handful of adjoining rooms.</p><p>Setting room boundaries works excellently too — if you want to restrict cleaning to a specific defined area, the vacuum won't stray beyond it. It also deals with unexpected obstacles like closed doors or moved furniture well, bumping into them once or twice and then adapting its path smartly. You  don't need to worry about multiple surfaces, either. Every time I spot the vacuum going over the rug in the middle of a mop cycle, the pads are automatically raised as it detects the soft surface to prevent damage.</p><p>The vacuum picks up small debris and cleans up small spills with no sweat, and for a more intensive task I doused my kitchen floor with oats, cereal crumbs, flour, ketchup, and pretty much anything else that I could find in the cupboard.</p><p>How did the Xiaomi Robot Vacuum X20 Max fare? I sent it out on the most intensive possible cleaning mode and it made a commendable dent in the mess. The oats, crumbs, and flour were masterfully hoovered up with the exception of a few survivors in the hardest to reach corners of the room. </p><p>The ketchup was more of a challenge, and at first I was pretty worried that it wouldn't be able to overcome it: the mop pads smeared it in a thin layer over the middle of the floor at first but, sure enough, after multiple visits to the base station in order to clean itself and to refill its water tanks, it was all gone after a few runs. I did spot some red residue in the grouting between tiles, but this took just a few seconds for me to wipe up.</p><p>It's the kind of performance you would want from a mid-range robot vacuum. It's not a total replacement for doing the cleaning, but it does decrease the need for big cleans.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UBNEWVeftDihmwGboQ6kVb" name="IMG_20251102_131748" alt="The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor." src="https://cdn.mos.cms.futurecdn.net/UBNEWVeftDihmwGboQ6kVb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That said, my unit has developed a major issue over long-term testing. Sometimes when the vacuum cleans its own mop pads (either at the start or during a cleaning task) the motor that's meant to suck away all the dirty water doesn't kick in. This means that dirty water starts to accumulate in the base station, eventually overflowing and spilling out onto the floor.</p><p>It's frustrating (and pretty gross), and I'm struggling to resolve the issue by cleaning the water sensors, fiddling with the base station, and so on. Anecdotally, a family member bought Xiaomi Robot Vacuum X20 Max a few weeks after seeing my one, and it developed a similar fault within just a couple of months. It was, after some back and forth, repaired by Xiaomi.</p><p>Looking online, it doesn't seem to be a widespread problem, though I've still been able to find at least a few others who report the same thing. Users on Facebook and Reddit also seem to have had luck getting their vacuums replaced via Xiaomi's support service, though I suspect I can't go through this route with a review sample.</p><p>For this reason, I would recommend buying from Xiaomi directly rather than through reseller if you do chose to pick one up, as you otherwise will likely have more trouble getting support if issues do arise.</p><ul><li><strong>Performance score: 2.5/5</strong></li></ul><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-app"><span>Xiaomi Robot Vacuum X20 Max review: app</span></h3><ul><li><strong>Easy to use</strong></li><li><strong>Scheduling features </strong></li><li><strong>Different suction levels</strong></li></ul><p>The Xiaomi Robot Vacuum X20 is compatible with the Xiaomi Home app. It's easy to use and has plenty of features, including the ability to view the map generated by the robot, and its location real time. This is on top of the option to start cleans in specific rooms, schedule cleans, or clean the mop pads.</p><p>You can view the battery level, and change cleaning modes. These include basic vacuuming, mopping, vacuuming and mopping, or vacuuming before mopping. You can increase the water output too, with three levels to choose between, but bear in mind that this will increase how quickly you will need to refill everything.</p><p>I didn't encounter any bugs within the app, and it remained quick and responsive during my year of testing. The fact that you have to set up a Mi account is a bit annoying, but otherwise it offers everything you could from robot vacuum companion software.</p><ul><li><strong>App score:</strong> <strong>4.5/5</strong></li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n6wmKPdCteyuwShqFUfqDb" name="IMG_20251102_131802" alt="The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor" src="https://cdn.mos.cms.futurecdn.net/n6wmKPdCteyuwShqFUfqDb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-should-you-buy-the-xiaomi-robot-vacuum-x20-max"><span>Should you buy the Xiaomi Robot Vacuum X20 Max?</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Good at vacuuming up debris and cleaning up small spills... when it works as intended.</p></td><td  ><p>2.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>The Xiaomi Robot Vacuum X20 Max doesn't defy any design conventions, but it's perfectly functional and packed with features.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>An easy to use app that offers every feature you could reasonably expect.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Decently positioned in the UK and regularly on sale, but  far too expensive if you're in the US and no longer sold in Australia..</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-13">Buy it if… </h2><div class="product"><p><strong>You want a robot vacuum capable of cleaning serious mess</strong><br />The Xiaomi Robot Vacuum X20 Max did a good job dealing with some serious kitchen debris and spills. It requires multiple passes for some wet stains, but it is able to get through large amounts of grime.</p></div><div class="product"><p><strong>You have a mix of hard flooring and carpet</strong><br />The Xiaomi Robot Vacuum X20 Max does a great job differentiating between different flooring types.</p></div><div class="product"><p><strong>You need a good app</strong><br />The Xiaomi Robot Vacuum X20 Max's companion app has all the features you could reasonably expect. It's a great bit of software.</p></div><h2 id="don-t-buy-it-if-4">Don’t buy it if… </h2><div class="product"><p><strong>You need long term reliability</strong><br />Although likely not widespread, it's hard to ignore the fact that my unit developed a fault after a year of use.</p></div><div class="product"><p><strong>You can't fit a large base station</strong><br />The base station here is pretty large, is an includes two water tanks in addition to the standard waste bag. Only pick this model if you know you have the space for it.</p></div><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-alternatives-to-consider"><span>Xiaomi Robot Vacuum X20 Max review: alternatives to consider</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Xiaomi Robot Vacuum X20 Max</strong></p></td><td  ><p><strong>Eufy X10 Pro Omni</strong> </p></td><td  ><p><strong>Eufy Omni S1 Pro</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Suction:</strong></p></td><td  ><p>8,000Pa</p></td><td  ><p>8,000Pa</p></td><td  ><p>8,000Pa</p></td></tr><tr><td class="firstcol " ><p><strong>Mopping:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop type:</strong></p></td><td  ><p>Dual rotating discs</p></td><td  ><p>Dual rotating discs</p></td><td  ><p>Spinning roller</p></td></tr><tr><td class="firstcol " ><p><strong>Robot size (W x D):</strong></p></td><td  ><p>350×97mm</p></td><td  ><p>12.9 x 13.9" / 32.7 x 35.3cm</p></td><td  ><p>12.8 x 13.7" / 32.5 x 34.8cm</p></td></tr><tr><td class="firstcol " ><p><strong>Robot height:</strong></p></td><td  ><p>~97mm</p></td><td  ><p>4.5" / 11.4cm</p></td><td  ><p>3.8" / 9.7cm</p></td></tr><tr><td class="firstcol " ><p><strong>Dock dimensions (W x D x H):</strong></p></td><td  ><p>340×420×563mm</p></td><td  ><p>14.4 x 18.9 x 18.1" / 36.6 x 48 x 46cm</p></td><td  ><p>15.8 x 18.4 x 26.4" / 40.1 x 46.7 x 67.1cm</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (onboard):</strong></p></td><td  ><p>450ml</p></td><td  ><p>Not stated</p></td><td  ><p>0.25L</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (onboard):</strong></p></td><td  ><p>Not stated</p></td><td  ><p>Not stated</p></td><td  ><p>0.24L</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (base):</strong></p></td><td  ><p>2.5L</p></td><td  ><p>2.5L</p></td><td  ><p>2.5L</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (base):</strong></p></td><td  ><p>4L</p></td><td  ><p>Not stated</p></td><td  ><p>Not stated</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty dust:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty / refill water:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop pad cleaning:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Wi-Fi control:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr></tbody></table></div><div class="product"><p><strong>Eufy X10 Pro Omni</strong><br />This powerful alternative from Eufy costs about the same as the Xiaomi Robot Vacuum X20 Max and offers excellent cleaning performance and a good app.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/robot-vacuums/eufy-x10-pro-omni" data-dimension112="59de3f74-8d9d-11f1-bf31-b9ac75999063" data-action="Deal Block" data-label="Read our full Eufy X10 Pro Omni review" data-dimension48="Read our full Eufy X10 Pro Omni review" data-dimension25=""><strong>Eufy X10 Pro Omni review</strong></a></p></div><div class="product"><p><strong>Eufy Omni S1 Pro</strong><br />The Omni S1 Pro, also from Eufy, is a good higher-end alternative. It's much more expensive, but comes with a raft of extra features to justify the higher price tag.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/robot-vacuums/eufy-omni-s1-pro-review" data-dimension112="b0722670-8d93-11f1-8dae-e757e67323fe" data-action="Deal Block" data-label="Read our full Eufy Omni S1 Pro review" data-dimension48="Read our full Eufy Omni S1 Pro review" data-dimension25=""><strong>Eufy Omni S1 Pro review</strong></a><strong></strong></p></div><h3 class="article-body__section" id="section-how-i-tested-the-xiaomi-robot-vacuum-x20-max"><span>How I tested the Xiaomi Robot Vacuum X20 Max</span></h3><p>I tested the Xiaomi Robot Vacuum X20 Max in my home for over a year, using it to clean a hallway and two large rooms on a weekly basis. It cleaned a wide variety of messes in that time on a number of different surfaces, namely carpet and tiled flooring. I fully utilized the companion app in order to evaluate its performance and compared the overall experience to other robot vacuums that I own. </p><p><strong>Read more about </strong><a href="https://www.techradar.com/news/how-we-test"><strong>how we test</strong></a></p><p><em>First reviewed August 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/robot-vacuums/xiaomi-robot-vacuum-x20-max-review</link>
                                                                            <description>
                            <![CDATA[ The Xiaomi Robot Vacuum X20 Max is a capable robot vacuum cleaner, but my unit developed issues after a year of testing. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">t5Q8GSMRfTAJT6awXkGaQZ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7oJPxRx4iaUrYMsutPUDVb-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 03 Aug 2026 09:58:16 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Robot Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                                                                <author><![CDATA[ dash.wood@futurenet.com (Dashiell Wood) ]]></author>                    <dc:creator><![CDATA[ Dashiell Wood ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/fcZC2LhPK8ufw6QWmhv6kY-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Dash is an experienced tech journalist who specializes in video games, electronic entertainment products, and the wider industry that surrounds them. He currently serves as the Gaming Editor at TechRadar, leading our review, preview, feature, and news coverage of the latest and greatest releases.&lt;/p&gt;&lt;p&gt;Before joining the team, he was Contributing Writer at PLAY (formerly Official PlayStation Magazine UK) and has written articles for many of the UK&#039;s other biggest gaming magazines including the likes of Edge, PC Gamer, and SFX.&lt;/p&gt;&lt;p&gt;Now, when he&#039;s not getting his greasy little mitts on the newest hardware or gaming gadget, he can be found listening to J-pop or feverishly devouring the latest Nintendo Switch otome.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7oJPxRx4iaUrYMsutPUDVb-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor.]]></media:description>                                                            <media:text><![CDATA[The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor.]]></media:text>
                                <media:title type="plain"><![CDATA[The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7oJPxRx4iaUrYMsutPUDVb-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-one-minute-review"><span>Xiaomi Robot Vacuum X20 Max review: one-minute review</span></h3><p>The Xiaomi Robot Vacuum X20 Max seems like a slam dunk in the robot vacuum space. Positioned right in between the budget and upper mid range sections of the market, it delivers strong vacuum and mopping performance that make it capable of tackling a wide variety of messes in your home.</p><p>With LiDAR technology, its mapping is excellent and the robot vacuum does a great job of navigating unexpected obstacles that it might encounter during a clean. The design isn't the most exciting, though it still has a good range of features like an extendable mop arm and automatic carpet detection.</p><p>The dock is large, which might make it tricky to fit into smaller homes, but it's pretty capable as well, with hot water washing and air drying capabilities to keep the mop pads clean between uses.</p><p>It's all underpinned by a competent app that's easy to use and offers key functions such as being able to schedule cleans, restricting the robot vacuum to certain rooms, and allowing you to customize the vacuuming power and amount of water used by the mop.</p><p>The elephant in the room is that my unit developed a fault after a year of testing, occasionally spilling water during a mop pad clean. It's unfortunate and, even though it doesn't seem widespread, makes this model difficult to recommend unreservedly. </p><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-price-range-availability"><span>Xiaomi Robot Vacuum X20 Max review: price, range &amp; availability</span></h3><ul><li><strong>List price $999.99 / £499.99 / AU$1,199</strong></li><li><strong>Launched late 2024</strong></li><li><strong>No longer available in Australia</strong></li><li><strong>Limited stock in the US</strong></li></ul><p>The Xiaomi Robot Vacuum X20 Max has a list price of $999.99 / £499.99 / AU$1,199, and is readily available via the brand’s website in the UK. It often receives discounts too, taking the price down by £100 or so around major sales events. At this price it sits neatly between the budget and upper mid range price brackets, coming in much more expensive than under $300 / £300 / AU$500  favorites like the Roborock Q7 M5 but cheaper than the likes of the Eufy X10 Pro Omni, which goes for $799.99 / £799 / AU$1,699.95.</p><p>That latter model is a good point of comparison here, as it also features mop and similar LiDAR sensor setup. With this in mind, the Xiaomi Robot Vacuum X20 Max is very solid value - especially if you get it at that reduced price point. Accessories like replacement brushes, dust bags, and mop pads are all available via the Xiaomi website at pretty reasonable prices too.</p><p>Unfortunately, this model seems a lot harder to come by in the US. You can find it on Amazon, but it goes for an eye-watering $999.99 and stock appears limited. At this price it’s significantly worse value and you would be better off spending less on an alternative. Its list price is AU$1,199 in Australia, but it appears to no longer be available either through Xiaomi's own store, or Amazon.</p><ul><li><strong>Value for money score: 3/5</strong></li></ul><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-specs"><span>Xiaomi Robot Vacuum X20 Max specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Suction</strong></p></td><td  ><p>8,000Pa</p></td></tr><tr><td class="firstcol " ><p><strong>Mopping</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop type</strong></p></td><td  ><p>Dual rotating discs</p></td></tr><tr><td class="firstcol " ><p><strong>Robot size (W x D)</strong></p></td><td  ><p>13.78 x 3.82 inches / 350 x 97mm</p></td></tr><tr><td class="firstcol " ><p><strong>Robot height</strong></p></td><td  ><p>~3.82 inches / ~97mm</p></td></tr><tr><td class="firstcol " ><p><strong>Dock dimensions (W x D x H)</strong></p></td><td  ><p>13.39 x 16.54 x 22.17 inches / 340 x 420 x 563mm</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (onboard)</strong></p></td><td  ><p>15.22oz / 450ml</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (onboard)</strong></p></td><td  ><p>Not stated</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (base)</strong></p></td><td  ><p>84.5oz / 2.5l</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (base)</strong></p></td><td  ><p>135.3oz / 4l</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty dust</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty / refill water</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop pad cleaning:</strong></p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Wi-Fi control</strong></p></td><td  ><p>Yes</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-design"><span>Xiaomi Robot Vacuum X20 Max: design</span></h3><ul><li><strong>Raised LiDAR puck</strong></li><li><strong>Extendable mop arm</strong></li></ul><p>The Xiaomi Robot Vacuum X20 Max isn’t pushing any boundaries when it comes to its overall design, but honestly that’s not such a bad thing.</p><p>It looks like your average robot vacuum, which is to say a big plastic disc with a chunky bumper at the front and a whole host of sensors. The most prominent of these is a big LiDAR sensor that sits in a little raised puck on the top, though there are others designed to spot obstacles or prevent the vacuum from falling off ledges.</p><p>Despite the basic look, the Xiaomi Robot Vacuum X20 Max has a bunch of useful features including two mop pads, one of which can be extended on a little arm for edge cleaning. The Xiaomi Robot Vacuum X20 Max is also capable of detecting which kind of surface it’s on, raising the mop pads when it goes over carpet to prevent any accidental stains.</p><p>Coming in at13.39 x 16.54 x 22.17 inches / 340 x 420 x 563mm, the docking station that it comes with is absolutely ginormous which could make it awkward to fit in smaller homes, but there are some good reasons for this size. Firstly, you’re getting a large 135.3oz / 4l clean water tank (removed for filling by simply popping up the lid on top of the dock) and a slightly smaller but still sizable 128.5oz / 3.8l tank for dirty water storage.</p><p>Xiaomi says that this is more than enough water to clean 2,152.8 square feet / 200 square meters on a single fill, and while my testing area was considerably smaller, I can say that it didn’t need refilling across multiple cleans.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WfH9sjV2pP7jKEcEasPaTb" name="IMG_20251103_132432" alt="The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor." src="https://cdn.mos.cms.futurecdn.net/WfH9sjV2pP7jKEcEasPaTb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The dock also has a hot water system to help wash both mop pads at 131F / 55C - a temperature that Xiaomi claims reduces odours more effectively. It dries the mop pads using hot air, a process that takes a few hours and produces a small level of sound akin to a desk fan.</p><p>There’s also a generous 84.5oz / 2.5l dust bag, which Xiaomi says only needs emptying once every 75 days in a three-person household with one pet. This seems like a very generous estimate to me, and your mileage will vary depending on your specific level of household mess. This bag size is on par with much of the competition, such as the aforementioned Eufy X10 Pro Omni, so you can expect similar performance to those models.</p><p>One feature that I particularly appreciate is the ability to remove parts of the dock for cleaning, including the little tray where the vacuum sits while charging. This isn't something that you will need to do regularly, but my previous robot vacuum tracked a decent layer of grime in its dock over the years and was comparatively pretty tricky to clean.</p><p>My only real complaint from a design standpoint is the vacuum’s incessant need to narrate what it's doing. By default it frequently declares 'start to dry the mop pad' and similar phrases in a loud, annoying voice. It's disruptive, though mercifully can be turned off in the app.</p><ul><li><strong>Design score: 4/5 </strong></li></ul><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-performance"><span>Xiaomi Robot Vacuum X20 Max review: performance</span></h3><ul><li><strong>Good navigation</strong></li><li><strong>Deals with multiple surfaces well</strong></li><li><strong>Base station pump developed issues</strong></li></ul><p>I've been using the Xiaomi Robot Vacuum X20 Max for a year now, and can say that it handles most daily cleaning tasks well. Its navigation capabilities are excellent and map that it generated of my cleaning area was spot on. I have the base station in the corner of an L-shape hallway and the robot never struggles to find it, even when it's been cleaning the handful of adjoining rooms.</p><p>Setting room boundaries works excellently too — if you want to restrict cleaning to a specific defined area, the vacuum won't stray beyond it. It also deals with unexpected obstacles like closed doors or moved furniture well, bumping into them once or twice and then adapting its path smartly. You  don't need to worry about multiple surfaces, either. Every time I spot the vacuum going over the rug in the middle of a mop cycle, the pads are automatically raised as it detects the soft surface to prevent damage.</p><p>The vacuum picks up small debris and cleans up small spills with no sweat, and for a more intensive task I doused my kitchen floor with oats, cereal crumbs, flour, ketchup, and pretty much anything else that I could find in the cupboard.</p><p>How did the Xiaomi Robot Vacuum X20 Max fare? I sent it out on the most intensive possible cleaning mode and it made a commendable dent in the mess. The oats, crumbs, and flour were masterfully hoovered up with the exception of a few survivors in the hardest to reach corners of the room. </p><p>The ketchup was more of a challenge, and at first I was pretty worried that it wouldn't be able to overcome it: the mop pads smeared it in a thin layer over the middle of the floor at first but, sure enough, after multiple visits to the base station in order to clean itself and to refill its water tanks, it was all gone after a few runs. I did spot some red residue in the grouting between tiles, but this took just a few seconds for me to wipe up.</p><p>It's the kind of performance you would want from a mid-range robot vacuum. It's not a total replacement for doing the cleaning, but it does decrease the need for big cleans.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UBNEWVeftDihmwGboQ6kVb" name="IMG_20251102_131748" alt="The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor." src="https://cdn.mos.cms.futurecdn.net/UBNEWVeftDihmwGboQ6kVb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>That said, my unit has developed a major issue over long-term testing. Sometimes when the vacuum cleans its own mop pads (either at the start or during a cleaning task) the motor that's meant to suck away all the dirty water doesn't kick in. This means that dirty water starts to accumulate in the base station, eventually overflowing and spilling out onto the floor.</p><p>It's frustrating (and pretty gross), and I'm struggling to resolve the issue by cleaning the water sensors, fiddling with the base station, and so on. Anecdotally, a family member bought Xiaomi Robot Vacuum X20 Max a few weeks after seeing my one, and it developed a similar fault within just a couple of months. It was, after some back and forth, repaired by Xiaomi.</p><p>Looking online, it doesn't seem to be a widespread problem, though I've still been able to find at least a few others who report the same thing. Users on Facebook and Reddit also seem to have had luck getting their vacuums replaced via Xiaomi's support service, though I suspect I can't go through this route with a review sample.</p><p>For this reason, I would recommend buying from Xiaomi directly rather than through reseller if you do chose to pick one up, as you otherwise will likely have more trouble getting support if issues do arise.</p><ul><li><strong>Performance score: 2.5/5</strong></li></ul><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-app"><span>Xiaomi Robot Vacuum X20 Max review: app</span></h3><ul><li><strong>Easy to use</strong></li><li><strong>Scheduling features </strong></li><li><strong>Different suction levels</strong></li></ul><p>The Xiaomi Robot Vacuum X20 is compatible with the Xiaomi Home app. It's easy to use and has plenty of features, including the ability to view the map generated by the robot, and its location real time. This is on top of the option to start cleans in specific rooms, schedule cleans, or clean the mop pads.</p><p>You can view the battery level, and change cleaning modes. These include basic vacuuming, mopping, vacuuming and mopping, or vacuuming before mopping. You can increase the water output too, with three levels to choose between, but bear in mind that this will increase how quickly you will need to refill everything.</p><p>I didn't encounter any bugs within the app, and it remained quick and responsive during my year of testing. The fact that you have to set up a Mi account is a bit annoying, but otherwise it offers everything you could from robot vacuum companion software.</p><ul><li><strong>App score:</strong> <strong>4.5/5</strong></li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4096px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n6wmKPdCteyuwShqFUfqDb" name="IMG_20251102_131802" alt="The Robot Vacuum X20 Max from Xiaomi in a hallway with a tiled floor" src="https://cdn.mos.cms.futurecdn.net/n6wmKPdCteyuwShqFUfqDb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4096" height="2304" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-should-you-buy-the-xiaomi-robot-vacuum-x20-max"><span>Should you buy the Xiaomi Robot Vacuum X20 Max?</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Good at vacuuming up debris and cleaning up small spills... when it works as intended.</p></td><td  ><p>2.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>The Xiaomi Robot Vacuum X20 Max doesn't defy any design conventions, but it's perfectly functional and packed with features.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>An easy to use app that offers every feature you could reasonably expect.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Decently positioned in the UK and regularly on sale, but  far too expensive if you're in the US and no longer sold in Australia..</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-13">Buy it if… </h2><div class="product"><p><strong>You want a robot vacuum capable of cleaning serious mess</strong><br />The Xiaomi Robot Vacuum X20 Max did a good job dealing with some serious kitchen debris and spills. It requires multiple passes for some wet stains, but it is able to get through large amounts of grime.</p></div><div class="product"><p><strong>You have a mix of hard flooring and carpet</strong><br />The Xiaomi Robot Vacuum X20 Max does a great job differentiating between different flooring types.</p></div><div class="product"><p><strong>You need a good app</strong><br />The Xiaomi Robot Vacuum X20 Max's companion app has all the features you could reasonably expect. It's a great bit of software.</p></div><h2 id="don-t-buy-it-if-4">Don’t buy it if… </h2><div class="product"><p><strong>You need long term reliability</strong><br />Although likely not widespread, it's hard to ignore the fact that my unit developed a fault after a year of use.</p></div><div class="product"><p><strong>You can't fit a large base station</strong><br />The base station here is pretty large, is an includes two water tanks in addition to the standard waste bag. Only pick this model if you know you have the space for it.</p></div><h3 class="article-body__section" id="section-xiaomi-robot-vacuum-x20-max-review-alternatives-to-consider"><span>Xiaomi Robot Vacuum X20 Max review: alternatives to consider</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Xiaomi Robot Vacuum X20 Max</strong></p></td><td  ><p><strong>Eufy X10 Pro Omni</strong> </p></td><td  ><p><strong>Eufy Omni S1 Pro</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Suction:</strong></p></td><td  ><p>8,000Pa</p></td><td  ><p>8,000Pa</p></td><td  ><p>8,000Pa</p></td></tr><tr><td class="firstcol " ><p><strong>Mopping:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop type:</strong></p></td><td  ><p>Dual rotating discs</p></td><td  ><p>Dual rotating discs</p></td><td  ><p>Spinning roller</p></td></tr><tr><td class="firstcol " ><p><strong>Robot size (W x D):</strong></p></td><td  ><p>350×97mm</p></td><td  ><p>12.9 x 13.9" / 32.7 x 35.3cm</p></td><td  ><p>12.8 x 13.7" / 32.5 x 34.8cm</p></td></tr><tr><td class="firstcol " ><p><strong>Robot height:</strong></p></td><td  ><p>~97mm</p></td><td  ><p>4.5" / 11.4cm</p></td><td  ><p>3.8" / 9.7cm</p></td></tr><tr><td class="firstcol " ><p><strong>Dock dimensions (W x D x H):</strong></p></td><td  ><p>340×420×563mm</p></td><td  ><p>14.4 x 18.9 x 18.1" / 36.6 x 48 x 46cm</p></td><td  ><p>15.8 x 18.4 x 26.4" / 40.1 x 46.7 x 67.1cm</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (onboard):</strong></p></td><td  ><p>450ml</p></td><td  ><p>Not stated</p></td><td  ><p>0.25L</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (onboard):</strong></p></td><td  ><p>Not stated</p></td><td  ><p>Not stated</p></td><td  ><p>0.24L</p></td></tr><tr><td class="firstcol " ><p><strong>Dust bin volume (base):</strong></p></td><td  ><p>2.5L</p></td><td  ><p>2.5L</p></td><td  ><p>2.5L</p></td></tr><tr><td class="firstcol " ><p><strong>Water tank volume (base):</strong></p></td><td  ><p>4L</p></td><td  ><p>Not stated</p></td><td  ><p>Not stated</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty dust:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Self-empty / refill water:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Mop pad cleaning:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p><strong>Wi-Fi control:</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td></tr></tbody></table></div><div class="product"><p><strong>Eufy X10 Pro Omni</strong><br />This powerful alternative from Eufy costs about the same as the Xiaomi Robot Vacuum X20 Max and offers excellent cleaning performance and a good app.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/robot-vacuums/eufy-x10-pro-omni" data-dimension112="59de3f74-8d9d-11f1-bf31-b9ac75999063" data-action="Deal Block" data-label="Read our full Eufy X10 Pro Omni review" data-dimension48="Read our full Eufy X10 Pro Omni review" data-dimension25=""><strong>Eufy X10 Pro Omni review</strong></a></p></div><div class="product"><p><strong>Eufy Omni S1 Pro</strong><br />The Omni S1 Pro, also from Eufy, is a good higher-end alternative. It's much more expensive, but comes with a raft of extra features to justify the higher price tag.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/robot-vacuums/eufy-omni-s1-pro-review" data-dimension112="b0722670-8d93-11f1-8dae-e757e67323fe" data-action="Deal Block" data-label="Read our full Eufy Omni S1 Pro review" data-dimension48="Read our full Eufy Omni S1 Pro review" data-dimension25=""><strong>Eufy Omni S1 Pro review</strong></a><strong></strong></p></div><h3 class="article-body__section" id="section-how-i-tested-the-xiaomi-robot-vacuum-x20-max"><span>How I tested the Xiaomi Robot Vacuum X20 Max</span></h3><p>I tested the Xiaomi Robot Vacuum X20 Max in my home for over a year, using it to clean a hallway and two large rooms on a weekly basis. It cleaned a wide variety of messes in that time on a number of different surfaces, namely carpet and tiled flooring. I fully utilized the companion app in order to evaluate its performance and compared the overall experience to other robot vacuums that I own. </p><p><strong>Read more about </strong><a href="https://www.techradar.com/news/how-we-test"><strong>how we test</strong></a></p><p><em>First reviewed August 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The compact Ninja Luxe Café Mini takes the guesswork out of tasty coffee ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-two-minute-review"><span>Ninja Luxe Café Mini Espresso Machine: two-minute review</span></h3><p>The Ninja Luxe Café Mini Espresso Machine is a compact version of the <a href="https://www.techradar.com/reviews/ninja-luxe-cafe">Ninja Luxe Café. </a>It doesn't require an enormous amount of counter space, especially considering that this single machine grinds your whole beans directly into your filter, weighs your grinds, brews your espresso or drip coffee, and froths your milk. You won't need any other coffee accoutrements on your counter.</p><p>While I did brew some absolutely delicious coffee with the Ninja Luxe Café Mini, there is definitely a learning curve. In fact, I wouldn't say I have mastered the espresso settings yet, even after brewing many cups. Even with the identical espresso settings, sometimes I get just an ounce or so and sometimes I get a lot more. Drip coffee comes out consistently well; no issues there. I also had some trouble frothing the milk; with just a minimum amount of milk in the jug it overflowed onto the counter. </p><p>Note that even though this is a semi-auto machine, you do need to have some manual strength and dexterity to get the portafilter properly into place. Be ready for some trial and error. If you're prepared to take on a project, I think you'll be well-rewarded for your efforts.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZjqYGZgdrxcdJFEc3zPhEj" name="Ninja-Luxe-Café-Mini-Espresso-Machine-flat-lay" alt="Ninja Luxe Café Mini Espresso Machine flat lay" src="https://cdn.mos.cms.futurecdn.net/ZjqYGZgdrxcdJFEc3zPhEj-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-price-and-availability"><span>Ninja Luxe Café Mini Espresso Machine: price and availability</span></h3><ul><li><strong>Widely available both in store and online</strong></li><li><strong>Retails for $449.99 USD (£338.50 GBP, $643.73 AUD)</strong></li><li><strong>Only sold in the black and chrome colorway</strong></li></ul><p>You can find the Ninja Luxe Café Mini Espresso Machine at many brick and mortar stores and websites, including Amazon, Best Buy, Kohl's, Target, and Ninja's own site. It retails for $449.99 USD (£338.50 GBP, $643.73 AUD) and comes in just the one color, black and chrome.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5460px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2bYCwTV7SX8krVGzHjreQ6" name="Ninja-Luxe-Café-Mini-Espresso-Machine-ready" alt="Ninja Luxe Café Mini Espresso Machine ready to use" src="https://cdn.mos.cms.futurecdn.net/2bYCwTV7SX8krVGzHjreQ6-1920-80.jpg" mos="" align="middle" fullscreen="" width="5460" height="3071" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-specs"><span>Ninja Luxe Café Mini Espresso Machine: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Ninja Luxe Café Mini Espresso Machine</p></td></tr><tr><td class="firstcol " ><p>Type</p></td><td  ><p>Semi-automatic</p></td></tr><tr><td class="firstcol " ><p>Dimensions (L x W x H)</p></td><td  ><p> 10.24 in L x 12.17 in W x 13.43 in H / 26.01 cm L x 30.91 cm W x 34.11 cm H</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p> 18.96 lbs / 8.6 kg</p></td></tr><tr><td class="firstcol " ><p>Brew styles</p></td><td  ><p>Espresso (double), Triple (espresso), Classic (coffee), Rich (coffee), and Over Ice (coffee)</p></td></tr><tr><td class="firstcol " ><p>Milk frother</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Connected device</p></td><td  ><p>No</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-design"><span>Ninja Luxe Café Mini Espresso Machine: design</span></h3><ul><li><strong>Efficient design gives it a smaller footprint </strong></li><li><strong>Aesthetically pleasing, goes with any decor </strong></li><li><strong>Five brew styles </strong></li></ul><p>The Ninja Luxe Café Mini is efficiently designed to house everything you need to make just about any sort of coffee drink in a relatively small package. When you first unpack it, you will need to determine your water hardness with the enclosed test strip and set your machine accordingly. Run a flush cycle and then you're ready to start brewing.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLq0e"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLq0e.js" async=""></script><p>The machine has a conical burr grinder, a brewing system that makes both espresso and coffee, and a steam wand. It comes with two filter baskets:, a smaller 'double' and a larger 'luxe' basket (unlike most espresso machines, there's no basket for pouring a single shot).</p><p>Place the basket into the portafilter, the funnel on top of that, and then slide it into the grinding cradle. Choose your brew style. The machine evaluates your beans and determines a recommended grind size. Turn the grind dial to meet the recommended number and hit the grind button.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s2K3VJJhiXdvSsAUP84tJe" name="Ninja-Luxe-Café-Mini-Espresso-Machine-espresso-grind-button" alt="Ninja Luxe Café Mini Espresso Machine grind button" src="https://cdn.mos.cms.futurecdn.net/s2K3VJJhiXdvSsAUP84tJe-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>Once your ground coffee is the basket, remove the portafilter and tamp down the grinds with the assisted tamper. It has a spring inside so you'll apply just the right amount of pressure.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2JVqxFY5tVnorSLbe7L359" name="Ninja-Luxe-Café-Mini-Espresso-Machine-tamper" alt="Ninja Luxe Café Mini Espresso Machine tamping down grounds" src="https://cdn.mos.cms.futurecdn.net/2JVqxFY5tVnorSLbe7L359-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>Then you can remove the funnel, place the portafilter under the Ninja Luxe Café Mini's group head and turn it until it locks into place. This takes some manual strength and dexterity, and the machine's relatively light weight means you have to brace it in place so it doesn't slide around, though it does get easier with repeated use.</p><p>You can manually select your level of strength (represented by one, two, or three beans) and temperature or just use the default. When you're done brewing, dispose of the puck of used coffee grounds, and clean the dirty components.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sJkfEQN5HXyXK9fymn2U2D" name="Ninja-Luxe-Café-Mini-Espresso-Machine-puck" alt="Ninja Luxe Café Mini Espresso Machine" src="https://cdn.mos.cms.futurecdn.net/sJkfEQN5HXyXK9fymn2U2D-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>There is also a milk jug and steam wand. To use it, turn the manual valve on the side from brewing mode to frothing mode. The owner's manual includes detailed instructions of how to get the most froth from your milk of choice. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="N4JgYqjQFxyWMb9BAtM8Hb" name="Ninja-Luxe-Café-Mini-Espresso-Machine-steaming-milk" alt="Ninja Luxe Café Mini Espresso Machine frothing milk" src="https://cdn.mos.cms.futurecdn.net/N4JgYqjQFxyWMb9BAtM8Hb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>You'll need to clean the tamper, funnel, basket, portafilter, steam wand and jug after each use. You'll also need to empty and clean out the drip tray every few brews, and every time you froth milk. Additionally, you'll need to descale the machine periodically. However, there is no obvious way to get in and clean the grinder. That part never gets wet, but coffee oils will build up there over time.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-performance"><span>Ninja Luxe Café Mini Espresso Machine: performance</span></h3><ul><li><strong>There is definitely a learning curve</strong></li><li><strong>You need manual strength and dexterity</strong></li><li><strong>Brew amounts are not consistent</strong></li></ul><div  class="fancy-box"><div class="fancy_box-title">Did you know TechRadar now has membership?</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MZftMKPquR3jRGaoR9TwcB" name="TechRadar-Insider-banner" caption="" alt="Various tech product cutouts next to the words 'Insider TechRadar Learn More'" src="https://cdn.mos.cms.futurecdn.net/MZftMKPquR3jRGaoR9TwcB-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Become a TechRadar Insider by simply clicking 'Join Now' at the top of this page. Have a question? Please email <a data-analytics-id="inline-link" href="https://futureplc.slgnt.eu/optiext/optiextension.dll?ID=XWc%2BNZbmPVY1QXCHegXUW5hAZTqddroX0h4zBFHHIu3aOyPDcGIlPjK%2BJMv55n1J8bfl5bA494yjEg3_i0iSaOXD%2BXycXT" target="_blank">membership@techradar.com</a></p></div></div><p>Overall, I think you'll find that the Ninja Luxe Café Mini will make you some great coffee and espresso drinks. There's definitely a learning curve, but if you have the patience you'll figure it out. Of bigger concern was that sometimes the brewing seemed to just stop short of a full yield, and I'm not sure why. The same beans brewed at the same setting just didn't always yield the same size espresso. This only happened to me while brewing espresso; all three of the drip coffee settings yielded perfect results every time.</p><p>There are five different brew settings: Espresso (which is actually a double espresso), Triple (espresso), Classic (drip coffee), Rich (a richer drip coffee), and Over Ice (drip coffee brewed at a lower temperature). I tested all five of them multiple times.</p><h2 id="espresso-2">Espresso</h2><p>The smallest drink you can make is a double espresso, there is no single espresso setting on this machine. The owner's manual says to throw away the first espresso you brew each time you put new beans into the hopper because it takes a couple of brews for the machine to dial in correctly. I tasted it anyway and yes, you should toss it. After that first one, the espresso tasted good though sometimes it would randomly give me a shorter brew. I did notice that I consistently got a beautiful crema.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CX2ExxDqEftfzMWcu85zPU-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dgaH9HB77HfFRmGfKfBK7U-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QJqk9RWcVRDgL8yfGFXRVU-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Kr3WDdVesZTUpg5bMYkWrT-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BXjaLjuCBq3r7oFPZ3crNU-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="triple-espresso">Triple espresso</h2><p>The experience of brewing the triple espresso is just like brewing the regular (double) one, only you use the Luxe basket instead of the smaller one. Again, the machine would sometimes give me a tiny brew. Pictured below is one of the smaller triples; other times it was much larger. Otherwise, the espresso was good and always had a lovely crema.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KCkShRtnGYFJKonpzxpABH-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine triple espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8hAZ6eWyMAe2Mzbd99JKaH-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine triple espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5chfGGvNDHUUtwppeXTJiH-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine triple espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="classic">Classic</h2><p>The Classic drip coffee setting yielded consistently good results. In addition to adjusting the grind size, brew temperature, and strength if you like, you can also choose to brew 6, 8, 10, or 12 ounces of coffee. The user experience of brewing the drip coffee is the same as brewing espresso, except that you skip the tamping step. The machine does something totally different on the inside. You get no crema. And when you go to throw the puck away, it's very wet, as opposed to the drier, crumbly puck you get with espresso. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZCVU7P8ZD3vHpEWe8onTcD-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing classic drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/isLDyx3qkmPUijGAc9wjCC-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing classic drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FwqXZ2mn6uTysKapAABrmD-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing classic drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="rich">Rich</h2><p>The rich drip coffee setting works just like the classic, only it yields a richer brew. I find I prefer the classic, as I found it a bit smoother and less bitter, but your tastes may differ.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cjZG9KdVfV3cYrdVPEVjUT-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DqPwGDuoZb7TL9g2n2iJUT-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="over-ice">Over ice</h2><p>The drip coffee over ice setting might have been my favorite. I found it very smooth and it didn't taste too diluted from the ice.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/73SHEj2BKLDo6hrWCbirZg-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine coffee over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4Z8ECS6hwxoWYitWXSPrig-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine coffee over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="steam-wand">Steam wand</h2><p>I found that it took some practice to get the milk frothing just right. I tried just leaving the jug in place and frothing it from there, and it works ok but doesn't produce much foam. I tried following the instructions about angle and movement in the owner's manual, and got too much foam. </p><p>The wand will purge itself right after frothing, and you'll want to wipe off the milk from the outside of the wand right away. Otherwise it sticks on there pretty good, requiring a bit of scrubbing to get it off.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/aYBnKtkEMABZWBYpUrvKiN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NXLxWPt8Fo23fCoikiTnBN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SAjDepkcWSJJNE6vyp5NxN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jFSekYYAJ3H5cEAeD8YqzN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 3.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-ninja-luxe-cafe-mini-espresso-machine"><span>Should you buy the Ninja Luxe Café Mini Espresso Machine?</span></h3><div ><table><caption>Ninja Luxe Café Mini Espresso Machine score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>While not cheap, it does replace five machines: conical burr grinder, coffee scale, espresso machine, coffee machine, and milk frother.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>It looks great on the counter and has a relatively small footprint for all it does.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>There's definitely a learning curve and my results were not consistent, but the coffee drinks especially were quite tasty and the espresso crema was perfect every time.</p></td><td  ><p>3.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-14">Buy it if</h2><div class="product"><p><strong>You want to be the barista</strong></p><p>You'll need to put the effort in, but you can be the barista at home with this machine. You control the settings and the results, with help from the machine's sensors.</p></div><div class="product"><p><strong>You want all the coffee accoutrements in one smallish machine</strong></p><p>Forget having a separate grinder, scale, brewer, and frother spread out over your countertop. Just one little machine does it all. </p></div><div class="product"><p><strong>You can't decide between espresso and drip coffee</strong></p><p>Now you don't even need two different machines for espresso and drip coffee. The Ninja Luxe Café Mini Espresso Machine does both, plus iced coffee and milk drinks too.</p></div><h2 id="don-t-buy-it-if-5">Don't buy it if</h2><div class="product"><p><strong>It's not in your budget</strong></p><p>While you'll likely make fewer trips to the coffee shop, and you don't have to buy five separate machines, it's still not cheap.</p></div><div class="product"><p><strong>You don't have great manual dexterity and/or strength</strong></p><p>It takes some coordination and muscle to get the portafilter correctly installed in the group head for brewing. </p></div><div class="product"><p><strong>You expect perfectly consistent results with the touch of a button</strong></p><p>This machine isn't a fully automatic touch-of-a-button machine. It's not always consistent and there is a learning curve.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="11580c9e-8a00-11f1-9116-bbf0649999a9" data-action="Deal Block" data-label="You expect perfectly consistent results with the touch of a buttonThis machine isn't a fully automatic touch-of-a-button machine. It's not always consistent and there is a learning curve." data-dimension48="You expect perfectly consistent results with the touch of a buttonThis machine isn't a fully automatic touch-of-a-button machine. It's not always consistent and there is a learning curve." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-also-consider"><span>Ninja Luxe Café Mini Espresso Machine: also consider</span></h3><div class="product"><a data-dimension112="0c5c4c48-89cc-11f1-ac32-b392bdd91f52" data-action="Deal Block" data-label="Read our De'Longhi La Specialista Touch review" data-dimension48="Read our De'Longhi La Specialista Touch review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:439px;"><p class="vanilla-image-block" style="padding-top:129.38%;"><img id="pDCYChq7xzuH7m3i5D7Sgg" name="delonghi-la-specialista-touch" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pDCYChq7xzuH7m3i5D7Sgg-1920-80.png" mos="" align="middle" fullscreen="" width="439" height="568" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>De'Longhi La Specialista Touch</strong></p><p>This one is a little bit more automated and beginner-friendly than the Ninja Luxe Café Mini Espresso Machine while still being pretty small and lightweight. It's also a bit more expensive.</p><p><strong>Read our </strong><a href="https://www.techradar.com/home/coffee-machines/delonghi-la-specialista-touch-review" data-dimension112="0c5c4c48-89cc-11f1-ac32-b392bdd91f52" data-action="Deal Block" data-label="Read our De'Longhi La Specialista Touch review" data-dimension48="Read our De'Longhi La Specialista Touch review" data-dimension25=""><strong>De'Longhi La Specialista Touch review</strong></a></p></div><div class="product"><a data-dimension112="9353b5e4-8a01-11f1-b689-a93aa04aa925" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1092px;"><p class="vanilla-image-block" style="padding-top:90.11%;"><img id="kjCoHEKpS6PkNySXmSoskL" name="Ninja-autobarista-pro-fully-automatic-espresso-machine-promo-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kjCoHEKpS6PkNySXmSoskL-1920-80.png" mos="" align="middle" fullscreen="" width="1092" height="984" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine </strong></p><p>While almost double the price of the Ninja Luxe Café Mini, it's worthwhile if you want a one-touch, super easy-to-use machine. It makes about a dozen different beverages including coffee, espresso, iced drinks, and milk drinks.</p><p><strong>Read my </strong><a href="https://www.techradar.com/home/coffee-machines/the-ninja-autobarista-pro-fully-automatic-espresso-machine-lets-you-make-just-about-any-coffee-creation-you-can-imagine" data-dimension112="9353b5e4-8a01-11f1-b689-a93aa04aa925" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25=""><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="9353b5e4-8a01-11f1-b689-a93aa04aa925" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="0c5c4ca2-89cc-11f1-8d2e-b579289c394e" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:714px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="s6V9tf8QxoTvr2hTXeuYd8" name="terra-kaffe-promo-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/s6V9tf8QxoTvr2hTXeuYd8-1920-80.png" mos="" align="middle" fullscreen="" width="714" height="714" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Terra Kaffe TK-02</strong></p><p>This fully automatic coffee and espresso machine does it all with a touch of a button or even a voice command to Alexa. Custom design your own beverages. It's the priciest of the bunch, but an amazing machine.</p><p><strong>Check out my </strong><a href="https://www.techradar.com/home/coffee-machines/terra-kaffe-tk-02-brings-the-high-end-coffee-shop-to-your-home" data-dimension112="0c5c4ca2-89cc-11f1-8d2e-b579289c394e" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25=""><strong>Terra Kaffe TK-02 review</strong></a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0c5c4ca2-89cc-11f1-8d2e-b579289c394e" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-ninja-luxe-cafe-mini-espresso-machine"><span>How I tested the Ninja Luxe Café Mini Espresso Machine</span></h3><p>I brewed and drank every drink on the menu: (double) Espresso, Triple (espresso), Classic (coffee), Rich (coffee), and (coffee) Over Ice more than once. I used two different kinds of beans for each beverage, first going all the way through the menu with a dark french roast and then again with a medium-dark roast. I frothed two different kinds of milk (almond and skim dairy) several times and added the milk to espresso shots. I cleaned all of the parts that touch the coffee after each use.</p><p><em>First reviewed July 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/coffee-machines/ninja-luxe-cafe-mini-review</link>
                                                                            <description>
                            <![CDATA[ This fun-size coffee maker has a steep learning curve, but take the time to hone your barista skills and you'll be rewarded for your efforts. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">PBZnpYd6c59QDq7MVvVZD4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pEEMiSvYxU49QdC5f5pDbW-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 02 Aug 2026 12:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Coffee Machines]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Karen Freeman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DDiERCZA8XFtW9uHdwjzpL-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Karen is a world traveler, writer, teacher, family woman, and occasionally a movie extra. She has been writing about Apple, consumer tech, and lifestyle products since 2010 for various publications including TechRadar, CNET, Tom’s Guide, iMore, Macworld, AppAdvice, and WatchAware.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pEEMiSvYxU49QdC5f5pDbW-1920-80.jpg">
                                                            <media:credit><![CDATA[Karen Freeman / Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ninja Luxe Café Mini with a cup of espresso]]></media:description>                                                            <media:text><![CDATA[Ninja Luxe Café Mini with a cup of espresso]]></media:text>
                                <media:title type="plain"><![CDATA[Ninja Luxe Café Mini with a cup of espresso]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pEEMiSvYxU49QdC5f5pDbW-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-two-minute-review"><span>Ninja Luxe Café Mini Espresso Machine: two-minute review</span></h3><p>The Ninja Luxe Café Mini Espresso Machine is a compact version of the <a href="https://www.techradar.com/reviews/ninja-luxe-cafe">Ninja Luxe Café. </a>It doesn't require an enormous amount of counter space, especially considering that this single machine grinds your whole beans directly into your filter, weighs your grinds, brews your espresso or drip coffee, and froths your milk. You won't need any other coffee accoutrements on your counter.</p><p>While I did brew some absolutely delicious coffee with the Ninja Luxe Café Mini, there is definitely a learning curve. In fact, I wouldn't say I have mastered the espresso settings yet, even after brewing many cups. Even with the identical espresso settings, sometimes I get just an ounce or so and sometimes I get a lot more. Drip coffee comes out consistently well; no issues there. I also had some trouble frothing the milk; with just a minimum amount of milk in the jug it overflowed onto the counter. </p><p>Note that even though this is a semi-auto machine, you do need to have some manual strength and dexterity to get the portafilter properly into place. Be ready for some trial and error. If you're prepared to take on a project, I think you'll be well-rewarded for your efforts.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZjqYGZgdrxcdJFEc3zPhEj" name="Ninja-Luxe-Café-Mini-Espresso-Machine-flat-lay" alt="Ninja Luxe Café Mini Espresso Machine flat lay" src="https://cdn.mos.cms.futurecdn.net/ZjqYGZgdrxcdJFEc3zPhEj-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-price-and-availability"><span>Ninja Luxe Café Mini Espresso Machine: price and availability</span></h3><ul><li><strong>Widely available both in store and online</strong></li><li><strong>Retails for $449.99 USD (£338.50 GBP, $643.73 AUD)</strong></li><li><strong>Only sold in the black and chrome colorway</strong></li></ul><p>You can find the Ninja Luxe Café Mini Espresso Machine at many brick and mortar stores and websites, including Amazon, Best Buy, Kohl's, Target, and Ninja's own site. It retails for $449.99 USD (£338.50 GBP, $643.73 AUD) and comes in just the one color, black and chrome.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5460px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2bYCwTV7SX8krVGzHjreQ6" name="Ninja-Luxe-Café-Mini-Espresso-Machine-ready" alt="Ninja Luxe Café Mini Espresso Machine ready to use" src="https://cdn.mos.cms.futurecdn.net/2bYCwTV7SX8krVGzHjreQ6-1920-80.jpg" mos="" align="middle" fullscreen="" width="5460" height="3071" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-specs"><span>Ninja Luxe Café Mini Espresso Machine: specs</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Name</p></td><td  ><p>Ninja Luxe Café Mini Espresso Machine</p></td></tr><tr><td class="firstcol " ><p>Type</p></td><td  ><p>Semi-automatic</p></td></tr><tr><td class="firstcol " ><p>Dimensions (L x W x H)</p></td><td  ><p> 10.24 in L x 12.17 in W x 13.43 in H / 26.01 cm L x 30.91 cm W x 34.11 cm H</p></td></tr><tr><td class="firstcol " ><p>Weight</p></td><td  ><p> 18.96 lbs / 8.6 kg</p></td></tr><tr><td class="firstcol " ><p>Brew styles</p></td><td  ><p>Espresso (double), Triple (espresso), Classic (coffee), Rich (coffee), and Over Ice (coffee)</p></td></tr><tr><td class="firstcol " ><p>Milk frother</p></td><td  ><p>Yes</p></td></tr><tr><td class="firstcol " ><p>Connected device</p></td><td  ><p>No</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-design"><span>Ninja Luxe Café Mini Espresso Machine: design</span></h3><ul><li><strong>Efficient design gives it a smaller footprint </strong></li><li><strong>Aesthetically pleasing, goes with any decor </strong></li><li><strong>Five brew styles </strong></li></ul><p>The Ninja Luxe Café Mini is efficiently designed to house everything you need to make just about any sort of coffee drink in a relatively small package. When you first unpack it, you will need to determine your water hardness with the enclosed test strip and set your machine accordingly. Run a flush cycle and then you're ready to start brewing.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-OzLq0e"></div>                            </div>                            <script src="https://kwizly.com/embed/OzLq0e.js" async=""></script><p>The machine has a conical burr grinder, a brewing system that makes both espresso and coffee, and a steam wand. It comes with two filter baskets:, a smaller 'double' and a larger 'luxe' basket (unlike most espresso machines, there's no basket for pouring a single shot).</p><p>Place the basket into the portafilter, the funnel on top of that, and then slide it into the grinding cradle. Choose your brew style. The machine evaluates your beans and determines a recommended grind size. Turn the grind dial to meet the recommended number and hit the grind button.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s2K3VJJhiXdvSsAUP84tJe" name="Ninja-Luxe-Café-Mini-Espresso-Machine-espresso-grind-button" alt="Ninja Luxe Café Mini Espresso Machine grind button" src="https://cdn.mos.cms.futurecdn.net/s2K3VJJhiXdvSsAUP84tJe-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>Once your ground coffee is the basket, remove the portafilter and tamp down the grinds with the assisted tamper. It has a spring inside so you'll apply just the right amount of pressure.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2JVqxFY5tVnorSLbe7L359" name="Ninja-Luxe-Café-Mini-Espresso-Machine-tamper" alt="Ninja Luxe Café Mini Espresso Machine tamping down grounds" src="https://cdn.mos.cms.futurecdn.net/2JVqxFY5tVnorSLbe7L359-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>Then you can remove the funnel, place the portafilter under the Ninja Luxe Café Mini's group head and turn it until it locks into place. This takes some manual strength and dexterity, and the machine's relatively light weight means you have to brace it in place so it doesn't slide around, though it does get easier with repeated use.</p><p>You can manually select your level of strength (represented by one, two, or three beans) and temperature or just use the default. When you're done brewing, dispose of the puck of used coffee grounds, and clean the dirty components.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sJkfEQN5HXyXK9fymn2U2D" name="Ninja-Luxe-Café-Mini-Espresso-Machine-puck" alt="Ninja Luxe Café Mini Espresso Machine" src="https://cdn.mos.cms.futurecdn.net/sJkfEQN5HXyXK9fymn2U2D-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>There is also a milk jug and steam wand. To use it, turn the manual valve on the side from brewing mode to frothing mode. The owner's manual includes detailed instructions of how to get the most froth from your milk of choice. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="N4JgYqjQFxyWMb9BAtM8Hb" name="Ninja-Luxe-Café-Mini-Espresso-Machine-steaming-milk" alt="Ninja Luxe Café Mini Espresso Machine frothing milk" src="https://cdn.mos.cms.futurecdn.net/N4JgYqjQFxyWMb9BAtM8Hb-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Karen Freeman / Future)</span></figcaption></figure><p>You'll need to clean the tamper, funnel, basket, portafilter, steam wand and jug after each use. You'll also need to empty and clean out the drip tray every few brews, and every time you froth milk. Additionally, you'll need to descale the machine periodically. However, there is no obvious way to get in and clean the grinder. That part never gets wet, but coffee oils will build up there over time.</p><ul><li><strong>Design score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-performance"><span>Ninja Luxe Café Mini Espresso Machine: performance</span></h3><ul><li><strong>There is definitely a learning curve</strong></li><li><strong>You need manual strength and dexterity</strong></li><li><strong>Brew amounts are not consistent</strong></li></ul><div  class="fancy-box"><div class="fancy_box-title">Did you know TechRadar now has membership?</div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MZftMKPquR3jRGaoR9TwcB" name="TechRadar-Insider-banner" caption="" alt="Various tech product cutouts next to the words 'Insider TechRadar Learn More'" src="https://cdn.mos.cms.futurecdn.net/MZftMKPquR3jRGaoR9TwcB-1920-80.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude" /></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Become a TechRadar Insider by simply clicking 'Join Now' at the top of this page. Have a question? Please email <a data-analytics-id="inline-link" href="https://futureplc.slgnt.eu/optiext/optiextension.dll?ID=XWc%2BNZbmPVY1QXCHegXUW5hAZTqddroX0h4zBFHHIu3aOyPDcGIlPjK%2BJMv55n1J8bfl5bA494yjEg3_i0iSaOXD%2BXycXT" target="_blank">membership@techradar.com</a></p></div></div><p>Overall, I think you'll find that the Ninja Luxe Café Mini will make you some great coffee and espresso drinks. There's definitely a learning curve, but if you have the patience you'll figure it out. Of bigger concern was that sometimes the brewing seemed to just stop short of a full yield, and I'm not sure why. The same beans brewed at the same setting just didn't always yield the same size espresso. This only happened to me while brewing espresso; all three of the drip coffee settings yielded perfect results every time.</p><p>There are five different brew settings: Espresso (which is actually a double espresso), Triple (espresso), Classic (drip coffee), Rich (a richer drip coffee), and Over Ice (drip coffee brewed at a lower temperature). I tested all five of them multiple times.</p><h2 id="espresso-2">Espresso</h2><p>The smallest drink you can make is a double espresso, there is no single espresso setting on this machine. The owner's manual says to throw away the first espresso you brew each time you put new beans into the hopper because it takes a couple of brews for the machine to dial in correctly. I tasted it anyway and yes, you should toss it. After that first one, the espresso tasted good though sometimes it would randomly give me a shorter brew. I did notice that I consistently got a beautiful crema.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/CX2ExxDqEftfzMWcu85zPU-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/dgaH9HB77HfFRmGfKfBK7U-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QJqk9RWcVRDgL8yfGFXRVU-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/Kr3WDdVesZTUpg5bMYkWrT-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/BXjaLjuCBq3r7oFPZ3crNU-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="triple-espresso">Triple espresso</h2><p>The experience of brewing the triple espresso is just like brewing the regular (double) one, only you use the Luxe basket instead of the smaller one. Again, the machine would sometimes give me a tiny brew. Pictured below is one of the smaller triples; other times it was much larger. Otherwise, the espresso was good and always had a lovely crema.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/KCkShRtnGYFJKonpzxpABH-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine triple espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8hAZ6eWyMAe2Mzbd99JKaH-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine triple espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/5chfGGvNDHUUtwppeXTJiH-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine triple espresso" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="classic">Classic</h2><p>The Classic drip coffee setting yielded consistently good results. In addition to adjusting the grind size, brew temperature, and strength if you like, you can also choose to brew 6, 8, 10, or 12 ounces of coffee. The user experience of brewing the drip coffee is the same as brewing espresso, except that you skip the tamping step. The machine does something totally different on the inside. You get no crema. And when you go to throw the puck away, it's very wet, as opposed to the drier, crumbly puck you get with espresso. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/ZCVU7P8ZD3vHpEWe8onTcD-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing classic drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/isLDyx3qkmPUijGAc9wjCC-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing classic drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FwqXZ2mn6uTysKapAABrmD-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine brewing classic drip coffee" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="rich">Rich</h2><p>The rich drip coffee setting works just like the classic, only it yields a richer brew. I find I prefer the classic, as I found it a bit smoother and less bitter, but your tastes may differ.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/cjZG9KdVfV3cYrdVPEVjUT-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/DqPwGDuoZb7TL9g2n2iJUT-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="over-ice">Over ice</h2><p>The drip coffee over ice setting might have been my favorite. I found it very smooth and it didn't taste too diluted from the ice.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/73SHEj2BKLDo6hrWCbirZg-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine coffee over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4Z8ECS6hwxoWYitWXSPrig-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine coffee over ice" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><h2 id="steam-wand">Steam wand</h2><p>I found that it took some practice to get the milk frothing just right. I tried just leaving the jug in place and frothing it from there, and it works ok but doesn't produce much foam. I tried following the instructions about angle and movement in the owner's manual, and got too much foam. </p><p>The wand will purge itself right after frothing, and you'll want to wipe off the milk from the outside of the wand right away. Otherwise it sticks on there pretty good, requiring a bit of scrubbing to get it off.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/aYBnKtkEMABZWBYpUrvKiN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/NXLxWPt8Fo23fCoikiTnBN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SAjDepkcWSJJNE6vyp5NxN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/jFSekYYAJ3H5cEAeD8YqzN-1920-80.jpg" alt="Ninja Luxe Café Mini Espresso Machine frother" /><figcaption><small role="credit">Karen Freeman / Future</small></figcaption></figure></figure><ul><li><strong>Performance score: 3.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-ninja-luxe-cafe-mini-espresso-machine"><span>Should you buy the Ninja Luxe Café Mini Espresso Machine?</span></h3><div ><table><caption>Ninja Luxe Café Mini Espresso Machine score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>While not cheap, it does replace five machines: conical burr grinder, coffee scale, espresso machine, coffee machine, and milk frother.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>It looks great on the counter and has a relatively small footprint for all it does.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>There's definitely a learning curve and my results were not consistent, but the coffee drinks especially were quite tasty and the espresso crema was perfect every time.</p></td><td  ><p>3.5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-14">Buy it if</h2><div class="product"><p><strong>You want to be the barista</strong></p><p>You'll need to put the effort in, but you can be the barista at home with this machine. You control the settings and the results, with help from the machine's sensors.</p></div><div class="product"><p><strong>You want all the coffee accoutrements in one smallish machine</strong></p><p>Forget having a separate grinder, scale, brewer, and frother spread out over your countertop. Just one little machine does it all. </p></div><div class="product"><p><strong>You can't decide between espresso and drip coffee</strong></p><p>Now you don't even need two different machines for espresso and drip coffee. The Ninja Luxe Café Mini Espresso Machine does both, plus iced coffee and milk drinks too.</p></div><h2 id="don-t-buy-it-if-5">Don't buy it if</h2><div class="product"><p><strong>It's not in your budget</strong></p><p>While you'll likely make fewer trips to the coffee shop, and you don't have to buy five separate machines, it's still not cheap.</p></div><div class="product"><p><strong>You don't have great manual dexterity and/or strength</strong></p><p>It takes some coordination and muscle to get the portafilter correctly installed in the group head for brewing. </p></div><div class="product"><p><strong>You expect perfectly consistent results with the touch of a button</strong></p><p>This machine isn't a fully automatic touch-of-a-button machine. It's not always consistent and there is a learning curve.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="11580c9e-8a00-11f1-9116-bbf0649999a9" data-action="Deal Block" data-label="You expect perfectly consistent results with the touch of a buttonThis machine isn't a fully automatic touch-of-a-button machine. It's not always consistent and there is a learning curve." data-dimension48="You expect perfectly consistent results with the touch of a buttonThis machine isn't a fully automatic touch-of-a-button machine. It's not always consistent and there is a learning curve." data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-ninja-luxe-cafe-mini-espresso-machine-also-consider"><span>Ninja Luxe Café Mini Espresso Machine: also consider</span></h3><div class="product"><a data-dimension112="0c5c4c48-89cc-11f1-ac32-b392bdd91f52" data-action="Deal Block" data-label="Read our De'Longhi La Specialista Touch review" data-dimension48="Read our De'Longhi La Specialista Touch review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:439px;"><p class="vanilla-image-block" style="padding-top:129.38%;"><img id="pDCYChq7xzuH7m3i5D7Sgg" name="delonghi-la-specialista-touch" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/pDCYChq7xzuH7m3i5D7Sgg-1920-80.png" mos="" align="middle" fullscreen="" width="439" height="568" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>De'Longhi La Specialista Touch</strong></p><p>This one is a little bit more automated and beginner-friendly than the Ninja Luxe Café Mini Espresso Machine while still being pretty small and lightweight. It's also a bit more expensive.</p><p><strong>Read our </strong><a href="https://www.techradar.com/home/coffee-machines/delonghi-la-specialista-touch-review" data-dimension112="0c5c4c48-89cc-11f1-ac32-b392bdd91f52" data-action="Deal Block" data-label="Read our De'Longhi La Specialista Touch review" data-dimension48="Read our De'Longhi La Specialista Touch review" data-dimension25=""><strong>De'Longhi La Specialista Touch review</strong></a></p></div><div class="product"><a data-dimension112="9353b5e4-8a01-11f1-b689-a93aa04aa925" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1092px;"><p class="vanilla-image-block" style="padding-top:90.11%;"><img id="kjCoHEKpS6PkNySXmSoskL" name="Ninja-autobarista-pro-fully-automatic-espresso-machine-promo-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/kjCoHEKpS6PkNySXmSoskL-1920-80.png" mos="" align="middle" fullscreen="" width="1092" height="984" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine </strong></p><p>While almost double the price of the Ninja Luxe Café Mini, it's worthwhile if you want a one-touch, super easy-to-use machine. It makes about a dozen different beverages including coffee, espresso, iced drinks, and milk drinks.</p><p><strong>Read my </strong><a href="https://www.techradar.com/home/coffee-machines/the-ninja-autobarista-pro-fully-automatic-espresso-machine-lets-you-make-just-about-any-coffee-creation-you-can-imagine" data-dimension112="9353b5e4-8a01-11f1-b689-a93aa04aa925" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25=""><strong>Ninja AutoBarista Pro Fully Automatic Espresso Machine review</strong></a><a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="9353b5e4-8a01-11f1-b689-a93aa04aa925" data-action="Deal Block" data-label="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension48="Read my Ninja AutoBarista Pro Fully Automatic Espresso Machine review" data-dimension25="">View Deal</a></p></div><div class="product"><a data-dimension112="0c5c4ca2-89cc-11f1-8d2e-b579289c394e" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:714px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="s6V9tf8QxoTvr2hTXeuYd8" name="terra-kaffe-promo-image" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/s6V9tf8QxoTvr2hTXeuYd8-1920-80.png" mos="" align="middle" fullscreen="" width="714" height="714" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Terra Kaffe TK-02</strong></p><p>This fully automatic coffee and espresso machine does it all with a touch of a button or even a voice command to Alexa. Custom design your own beverages. It's the priciest of the bunch, but an amazing machine.</p><p><strong>Check out my </strong><a href="https://www.techradar.com/home/coffee-machines/terra-kaffe-tk-02-brings-the-high-end-coffee-shop-to-your-home" data-dimension112="0c5c4ca2-89cc-11f1-8d2e-b579289c394e" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25=""><strong>Terra Kaffe TK-02 review</strong></a>.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="0c5c4ca2-89cc-11f1-8d2e-b579289c394e" data-action="Deal Block" data-label="Check out my Terra Kaffe TK-02 review" data-dimension48="Check out my Terra Kaffe TK-02 review" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-ninja-luxe-cafe-mini-espresso-machine"><span>How I tested the Ninja Luxe Café Mini Espresso Machine</span></h3><p>I brewed and drank every drink on the menu: (double) Espresso, Triple (espresso), Classic (coffee), Rich (coffee), and (coffee) Over Ice more than once. I used two different kinds of beans for each beverage, first going all the way through the menu with a dark french roast and then again with a medium-dark roast. I frothed two different kinds of milk (almond and skim dairy) several times and added the milk to espresso shots. I cleaned all of the parts that touch the coffee after each use.</p><p><em>First reviewed July 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Eufy Omni S2 review: a premium robot vacuum with performance to match its price tag ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-eufy-omni-s2-two-minute-review"><span>Eufy Omni S2: two-minute review</span></h3><p>Eufy’s latest flagship robotic vacuum and mop, the Omni S2 is a hugely impressive appliance that combines excellent mopping with brilliant vacuuming to create one of the best home cleaning systems you can buy. It also self-cleans so thoroughly that, after several weeks of daily use, the dust bin, rollers and mop still looked like new.</p><p>The Omni S2 uses warm water to clean its spinning mop as it goes, while also scraping away dirt and using cyclone technology to whisk dust more efficiently into the onboard bin, instead of leaving it to clog up the filters. Water is ozonated in the base station to further improve cleaning performance, and there’s an integrated detergent system too.</p><p>The robot itself can even be fitted with a fragrance diffuser, which makes your room smell nice after every clean; three different scents are included in the box and, along with the detergent, and can be replenished from Eufy’s website.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kGcSVaipyhnnAEDrTo2A45" name="IMG_7384" alt="Eufy Omni S2 robot vacuum cleaning right beside a skirting board" src="https://cdn.mos.cms.futurecdn.net/kGcSVaipyhnnAEDrTo2A45-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It navigates well, mostly avoiding contact with walls and doors while driving very closely to all manner of obstacles without pushing them around, driving over them or ingesting them. The S2 is good at climbing over raised carpets, rugs and door thresholds — something the Omni S1 struggled with – and the app does a great job of quickly mapping your home, with a simple editing system for labeling every room correctly, and even adding virtual furniture. </p><p>I was impressed by how quiet the Omni S2 is, even with its powerful Cyclone mode engaged, and how the base station doesn’t sound like an Airbus when emptying the robot. It’s a very expensive product, but one that looks good and performs extremely well.</p><h3 class="article-body__section" id="section-eufy-omni-s2-price-and-availability"><span>Eufy Omni S2: price and availability</span></h3><ul><li><strong>List price: $1,599 / £1,599 / AU$2,299</strong></li><li><strong>Launched: March 2026</strong></li></ul><p>Just two years on from the launch of the <a href="https://www.techradar.com/home/robot-vacuums/eufy-omni-s1-pro-review">Omni S1 Pro</a>, Eufy now has the Omni S2. This is now the company’s flagship robotic vacuum and mop, with a price, performance and feature set to match.</p><p>It carries a recommended retail price of $1,599 / £1,599 / AU$2,299, making it £300 more expensive than the S1 pro, which remains on sale. That’s an awful lot of money for a vacuum cleaner — especially when</p><p>Eufy’s own range of robovacs starts under the £150 mark, and one of my favourites — the <a href="https://www.techradar.com/home/robot-vacuums/eufy-x10-pro-omni">X10 Pro Omni</a> vacuum and mop — is a comparative snip at £599.</p><p>What does the extra £1,000 get you with the S2? More power, of course, with greater suction thanks to Eufy’s new AeroTurbo 2.0 tech, improved intelligence, greater threshold clearance, a more powerful mop, better computer vision, a self-cleaning mop, electrolysed water, integrated detergent and even a built-in fragrance system with three included scents to pick from.</p><p>An additional cost to bear in mind is Eufy’s replacement parts kit. The brushes, bags, mops and rollers of all vacuum cleaners need replacing, so ongoing costs aren’t unusual, but Eufy likes to charge plenty. A complete kit for the S2 is £79.99. Premium parts for a premium robovac, I suppose. More welcome is Eufy’s new two-year warranty, which applies to all robot vacuums launched in 2026 and doubles the previous coverage.</p><ul><li><strong>Value score: 3.5/5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-s2-specifications"><span>Eufy Omni S2: specifications</span></h3><div ><table><thead><tr><th class="firstcol " ><p><strong>Specification</strong></p></th><th  ><p><strong>Detail</strong></p><p> </p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Max suction</p></td><td  ><p>30,000 Pa</p></td></tr><tr><td class="firstcol " ><p>Robot diameter</p></td><td  ><p>350 mm</p></td></tr><tr><td class="firstcol " ><p>Robot height</p></td><td  ><p>3.4 in / 85 mm</p></td></tr><tr><td class="firstcol " ><p>Dock dimensions</p></td><td  ><p>15.0 x 17.7 x 26.4 in / 380 x 450 x 670 mm</p></td></tr><tr><td class="firstcol " ><p>Dust bin volume (base)</p></td><td  ><p>2.5 litres</p></td></tr><tr><td class="firstcol " ><p>Water tank volume (base)</p></td><td  ><p>3L (clean) 2L (dirty)</p></td></tr><tr><td class="firstcol " ><p>Base type</p></td><td  ><p>Charge, auto-empty, hot water mop wash, hot air mop dry, clean water refill, self-clean</p></td></tr><tr><td class="firstcol " ><p>Max threshold clearance</p></td><td  ><p>Up to 1.7 in / 42mm</p></td></tr><tr><td class="firstcol " ><p>Mop type</p></td><td  ><p>Self-cleaner roller</p></td></tr><tr><td class="firstcol " ><p>Mop pad lifting</p></td><td  ><p>1.10 in / 28 mm</p></td></tr><tr><td class="firstcol " ><p>Max runtime</p></td><td  ><p>180 minutes</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-eufy-omni-s2-design"><span>Eufy Omni S2: design</span></h3><ul><li><strong>Docking station with charger, dust bag, water tanks and mop drying</strong></li><li><strong>Rotating, self-cleaning mop</strong></li><li><strong>Integrated detergent and fragrance supply</strong></li></ul><p>The S2 has a similar but more refined look than its S1 predecessor. The subtle bronze tint to sections of the robot and docking station give it a premium aesthetic that blends nicely with the futuristic lighting in both the clean water tank of the dock, and the robot’s onboard dust bin.</p><p>Taller than many docking stations, but significantly more elegant than most, the Omni S2’s appearance helps to justify its lofty price tag — and that’s further aided by the display and touch controls on top of the dock. These are handily located to press without stooping down to the robot itself, while the screen is useful for checking on the robot’s status and spotting error messages.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XQFx3y9oWPcWQf4FpzLbFX-1920-80.jpg" alt="Eufy Omni S2 robot vacuum in dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/npbJVa5EYdq3UvsbYwBi7X-1920-80.jpg" alt="Eufy Omni S2 robot vacuum front camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hC9rmF3kmXJhf7QxNFxcmW-1920-80.jpg" alt="Eufy Omni S2 robot vacuum dock control panel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mDKY9QNwrwyj6VYnCyPYVW-1920-80.jpg" alt="Side view of Eufy Omni S2 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Short of making you a cup of tea while the robot cleans up, the S2’s docking station does absolutely everything. It charges the robot, empties its dust bin, replenishes its water supply (and even ozonates fresh water before it’s fed to the mop), cleans the mop with water heated to 70 degrees centigrade, dries it with hot air, refills the detergent tank, and has enough dust bin capacity for up to a claimed 68 days between bag replacements.</p><p>The robot itself is almost circular, with a central roller that’s claimed to be 100 percent tangle free, a pair of spinning side brushes, and a roller mop that self-cleans, slides outwards by 1.5cm to reach into corners and even an onboard fragrance supply to make your home smell nice. The S2 includes three different fragrances in the box, but these are a bespoke design so replacements can only be bought from Eufy itself. The same goes for the detergent bottle too, while thankfully the 2.5-litre dust bags are generic.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JG8VVbHNeD4meyZTnK4ChW-1920-80.jpg" alt="Eufy Omni S2 robot vacuum brushes" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sRZM73Aw8ucJMJofqQf7VX-1920-80.jpg" alt="Eufy Omni S2 robot vacuum upside down, showing mop roller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/45eCBkJPcujkVcVujpxLhW-1920-80.jpg" alt="Eufy Omni S2 robot vacuum roller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6brj2w4TtvLcC8CGvLFrTX-1920-80.jpg" alt="Eufy Omni S2 robot vacuum with mop roller removed" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I like how the Omni S2 looks. Its design is more sophisticated than that of the S1, and I can imagine it neatly complementing the lavish houses of its deep-pocketed buyers. And while tall, at 670mm (26.4 inches), the docking station is relatively slim.</p><p>The robot is also relatively short, at 85mm. This compares favorably against taller, bulkier robovacs like the Dyson Spot+Scrub AI, which towers over the Eufy at 110mm and is less capable of cleaning beneath low furniture.</p><p>A welcome design upgrade for the Eufy Omni S2 is its ability to now clear door thresholds up to 4.2cm tall, up from just 2cm for the Omni S1. I was often left frustrated by that robot’s inability to drive up from exposed floorboards to a carpeted neighboring room, but have had no such issues with the S2.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-s2-performance"><span>Eufy Omni S2: performance</span></h3><ul><li><strong>Impressive vacuuming</strong></li><li><strong>Excellent mopping</strong></li><li><strong>Strong improvement over the S1</strong></li></ul><p>From the setup process and mapping, to vacuuming, mopping, navigation and self-cleaning, the Omni S2 is a triumph. You might say it should well be for the massive price tag, but even in 2026 it’s rare for such a complex new product to impress so universally. Where the Eufy Omni S1 struggled in some key areas — navigation, threshold clearance and sometimes even vacuuming — the S2’s performance is close to perfect.</p><p>Yes, it’s an ultra-premium product with a price to match. This is right up there with your Leica camera, Rimowa suitcase and five-figure turntable. I imagine the typical Omni S2 owner is the sort of person who wouldn't blink at splashing out on a pair of <a href="https://www.techradar.com/audio/earbuds-airpods/airpods-max-2-review">Apple AirPods Max 2</a> at the airport because they forgot their first-gens at home. They’d probably deal with a flight delay by picking up a new Swiss watch, too.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YnnR3xtZnb2p6R8oB8uYp5" name="IMG_7396" alt="Eufy Omni S2 robot vacuum cleaning a carpeted floor" src="https://cdn.mos.cms.futurecdn.net/YnnR3xtZnb2p6R8oB8uYp5-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And that’s absolutely fine. Whatever the product, there’s always something that happens to sell the most expensive one, and for robotic vacuums that just so happens to be Eufy with the Omni S2. That doesn’t inherently count against it, because there are always customers happy to pay a premium for the one they like, or not really care about the cost because the S2’s spec sheet, design and feature set already put it at the top of the market.</p><p>What matters is how it performs in the real world, and how that compares to user expectations. Naturally, mine were at an all-time high and the S2 mostly delivered. The vacuuming performance is noticeably better than with the S1, and after a month of testing I still smile at the neat stripes vacuumed into my lounge carpet — and at how pleasant the S2’s fragrance system makes every room smell.</p><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="Tft3jWsLLBV9C25aEdSz6X" name="Eufy Omni S2-8" alt="Eufy Omni S2 robot vacuum battery" src="https://cdn.mos.cms.futurecdn.net/Tft3jWsLLBV9C25aEdSz6X-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Eufy has improved navigation since the S1, and now the S2 is smart enough to not vacuum over the tasselled ends of a rug. It also automatically detects rug and carpet thickness, then raises itself by up to 50mm (1.97 inches) to prevent getting stuck in deep-pile fabric. In my testing, the S2 flagged a potentially tricky bit of carpet — which was actually an integrated but deeply contoured door mat — so I could tell it to ignore the concern or permanently avoid it.</p><p>Navigation and map creation is generally good. The robot only once got stuck and called for help, and I was impressed by how quickly the S2 mapped the ground floor of my home and did a decent job of detecting room boundaries. I used the app to fine-tune these, and was pleased to see how the S2 had added 3D cupboards, sofas, tables, chairs and other bits of furniture to the map. This isn’t strictly necessary, but it’s nice to see how the S2 correctly understands its environment.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2090px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="WVmSp6qCaTqKfAmueWeBTX" name="Eufy Omni S2-13" alt="Eufy Omni S2 robot vacuum in dock, plugged in" src="https://cdn.mos.cms.futurecdn.net/WVmSp6qCaTqKfAmueWeBTX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2090" height="1176" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Eufy claims a maximum suction of 30,000Pa, which is a huge upgrade over the 8,000Pa of the Omni S1 and other Eufy robots like the X10. There are four suction modes — Quiet, Standard, Turbo and Max — three options of cleaning intensity, three water levels, and the option of performing each cleaning task once or twice. As with the S1, the S2 returns to base whenever it needs to empty its bin, clean the mop, replenish its water supply or charge the battery. A mode called AI Automation promises to adjust cleaning strategy based on room type, floor material and cleaning frequency.</p><p>The Omni S2 deeply impressed during the first few weeks of general use, keeping hard floors and carpets clean — even after a cockapoo puppy joined our household, and his insistence on helping with garden projects brought a lot of dirt into the house. It was a joy, quite frankly, to have the S2 on hand, ready to clean up after every chaotic evening of dog zoomies.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1998px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="DTmi4rp3xbhFrV4ovDo3FX" name="Eufy Omni S2-3" alt="Eufy Omni S2 robot vacuum dock open" src="https://cdn.mos.cms.futurecdn.net/DTmi4rp3xbhFrV4ovDo3FX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1998" height="1124" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I also loved how the S2 kept itself clean. Not only is the mop cleaned and dried with every use, but the cyclone-style dust collection ensures the onboard bin is practically spotless after each empty, and the filters don’t get clogged up. The rollers also looked like new after many hours of use, thanks to an anti-tangle design that actually works.</p><p>The mopping system works as well as the S1’s — evidenced by the absolutely filthy water collected in the waste tank of the docking station. I’d recommend owners empty this frequently, because if you wait a couple of weeks or so until it’s full, pouring it away is a seriously stinky process.</p><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="QzwSkAMEHutrNvcfz9xWXW" name="Eufy Omni S2" alt="Eufy Omni S2 robot vacuum dock screen" src="https://cdn.mos.cms.futurecdn.net/QzwSkAMEHutrNvcfz9xWXW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>During TechRadar’s standardized robovac tests the Omni S2 continued to perform very well. These tests include two rounds of vacuuming on both carpets and hard floors, plus an obstacle avoidance test and a mopping test.</p><p>Pleasingly, the Omni S2’s vacuum performance is better than its predecessor, the two-year-old Omni S1. Vacuuming up oats from carpet was particularly impressive, with not a single piece being missed (except where I set the target zone in slightly the wrong place).</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294155314-yqci7jgyv *, #fv-chart-1784294155314-yqci7jgyv *:before, #fv-chart-1784294155314-yqci7jgyv *:after, #fv-chart-1784294155314-yqci7jgyv-slideshow *, #fv-chart-1784294155314-yqci7jgyv-slideshow *:before, #fv-chart-1784294155314-yqci7jgyv-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294155314-yqci7jgyv, #fv-chart-1784294155314-yqci7jgyv-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294155314-yqci7jgyv {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294155314-yqci7jgyv .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294155314-yqci7jgyv .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294155314-yqci7jgyv .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294155314-yqci7jgyv .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-expand-btn, #fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-expand-btn:hover, #fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294155314-yqci7jgyv .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row, #fv-chart-1784294155314-yqci7jgyv .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294155314-yqci7jgyv .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294155314-yqci7jgyv .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-pie-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-bar-product,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-product-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-cluster,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-label-space,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-benchmark-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-dropdown-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-chart-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-chart-subhead,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-header,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-vs,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294155314-yqci7jgyv.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294155314-yqci7jgyv .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294155314-yqci7jgyv.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:15:55.315Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294155314-yqci7jgyv" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294155314-yqci7jgyv-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/5AX3PYNdnhsZxQ7mujM28e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/5AX3PYNdnhsZxQ7mujM28e.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ZyrKGYN5oJBpNP5hu7PN5e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ZyrKGYN5oJBpNP5hu7PN5e.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before vacuuming</div><div class="fv-image-compare-label fv-image-compare-label-right">After vacuuming</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294155314-yqci7jgyv', false); });} else {initialize('fv-chart-1784294155314-yqci7jgyv', false);}})();</script></div><p>During these tests I found the quickest, least powerful mode, called Quiet, was indeed very quiet (just 55 decibels on carpet), but the S2 performs best when suction is upped to the Standard or Turbo modes, cleaning intensity is increased from Fast to Standard, and the S2 is asked to perform two passes of the target zone or room, instead of one.</p><p>A crumb mix made of flour and crushed biscuit was completely lifted from a wooden kitchen floor using the S2’s standard intensity and suction settings, while on carpet I found Turbo or Cyclone (the most powerful suction mode) was best.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294463899-v6ki3xaut *, #fv-chart-1784294463899-v6ki3xaut *:before, #fv-chart-1784294463899-v6ki3xaut *:after, #fv-chart-1784294463899-v6ki3xaut-slideshow *, #fv-chart-1784294463899-v6ki3xaut-slideshow *:before, #fv-chart-1784294463899-v6ki3xaut-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294463899-v6ki3xaut, #fv-chart-1784294463899-v6ki3xaut-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294463899-v6ki3xaut {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294463899-v6ki3xaut .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294463899-v6ki3xaut .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294463899-v6ki3xaut .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294463899-v6ki3xaut .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-expand-btn, #fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-expand-btn:hover, #fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294463899-v6ki3xaut .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row, #fv-chart-1784294463899-v6ki3xaut .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294463899-v6ki3xaut .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294463899-v6ki3xaut .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-pie-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-bar-product,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-product-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-cluster,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-label-space,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-benchmark-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-dropdown-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-chart-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-chart-subhead,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-header,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-vs,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294463899-v6ki3xaut.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294463899-v6ki3xaut .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294463899-v6ki3xaut.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:21:03.899Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294463899-v6ki3xaut" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294463899-v6ki3xaut-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/UUEE6fnFvSvDKyzt2swA4e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/UUEE6fnFvSvDKyzt2swA4e.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Crumb mix before first pass</div><div class="fv-image-compare-label fv-image-compare-label-right">Crumb mix after first pass</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294463899-v6ki3xaut', false); });} else {initialize('fv-chart-1784294463899-v6ki3xaut', false);}})();</script></div><p>With that enabled, plus the intensity increased to Deep and the number of passes upped to two, the robot did a superb job.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294519188-pba2ojlaz *, #fv-chart-1784294519188-pba2ojlaz *:before, #fv-chart-1784294519188-pba2ojlaz *:after, #fv-chart-1784294519188-pba2ojlaz-slideshow *, #fv-chart-1784294519188-pba2ojlaz-slideshow *:before, #fv-chart-1784294519188-pba2ojlaz-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294519188-pba2ojlaz, #fv-chart-1784294519188-pba2ojlaz-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294519188-pba2ojlaz {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294519188-pba2ojlaz .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294519188-pba2ojlaz .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294519188-pba2ojlaz .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294519188-pba2ojlaz .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-expand-btn, #fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-expand-btn:hover, #fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294519188-pba2ojlaz .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row, #fv-chart-1784294519188-pba2ojlaz .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294519188-pba2ojlaz .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294519188-pba2ojlaz .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-pie-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-bar-product,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-product-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-cluster,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-label-space,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-benchmark-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-dropdown-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-chart-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-chart-subhead,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-header,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-vs,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294519188-pba2ojlaz.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294519188-pba2ojlaz .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294519188-pba2ojlaz.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:21:59.188Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294519188-pba2ojlaz" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294519188-pba2ojlaz-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/WapJPZGPYymaoX7Be6uK3e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/WapJPZGPYymaoX7Be6uK3e.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Crumb mix after first pass</div><div class="fv-image-compare-label fv-image-compare-label-right">Crumb mix after second pass</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294519188-pba2ojlaz', false); });} else {initialize('fv-chart-1784294519188-pba2ojlaz', false);}})();</script></div><p>The oat test is usually tougher, because robovacs tend to flick larger debris across hard floors with their spinning side brushes. The Omni S2 fell foul of this too, but as ever my advice is to set the robot to vacuum the entire room twice, instead of aiming for a target and kicking it everywhere.</p><p>With the right settings applied, the S2 picked up every single piece – and passed the same test with flying colors on carpet too, where flicking debris is less of an issue.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294576158-jknu8qhxr *, #fv-chart-1784294576158-jknu8qhxr *:before, #fv-chart-1784294576158-jknu8qhxr *:after, #fv-chart-1784294576158-jknu8qhxr-slideshow *, #fv-chart-1784294576158-jknu8qhxr-slideshow *:before, #fv-chart-1784294576158-jknu8qhxr-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294576158-jknu8qhxr, #fv-chart-1784294576158-jknu8qhxr-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294576158-jknu8qhxr {position: relative !important; overflow: visible !important;--riv-primary: #AA1124;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #AA1124;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-select:focus {outline: 2px solid #AA1124 !important;border-color: #AA1124 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294576158-jknu8qhxr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294576158-jknu8qhxr .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294576158-jknu8qhxr .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294576158-jknu8qhxr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-expand-btn, #fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-expand-btn:hover, #fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294576158-jknu8qhxr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row, #fv-chart-1784294576158-jknu8qhxr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294576158-jknu8qhxr .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294576158-jknu8qhxr .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-pie-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-bar-product,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-product-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-cluster,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-label-space,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-benchmark-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-dropdown-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-chart-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-chart-subhead,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-header,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-vs,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294576158-jknu8qhxr.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294576158-jknu8qhxr .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294576158-jknu8qhxr.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "Default"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:22:56.158Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","Default"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294576158-jknu8qhxr" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294576158-jknu8qhxr-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/iTasmqdAcCQrbxHbWESe3e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/iTasmqdAcCQrbxHbWESe3e.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/4P8Q3UcAuFMS5oZBTFY34e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/4P8Q3UcAuFMS5oZBTFY34e.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><div class="fv-image-compare-arrow-left"></div><div class="fv-image-compare-arrow-right"></div></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before vacuuming</div><div class="fv-image-compare-label fv-image-compare-label-right">After vacuuming</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294576158-jknu8qhxr', false); });} else {initialize('fv-chart-1784294576158-jknu8qhxr', false);}})();</script></div><p>I tested the mopping system with a dried smear of ketchup, which was promptly removed from the wooden floor. The cylindrical mop spins and pivots outwards to reach into the edges of the room, while the robot scrapes it clean and washes it while driving. The mop is then dried with hot air at the base station, which takes several hours but is very quiet.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784293750108-vrhlpw5yh *, #fv-chart-1784293750108-vrhlpw5yh *:before, #fv-chart-1784293750108-vrhlpw5yh *:after, #fv-chart-1784293750108-vrhlpw5yh-slideshow *, #fv-chart-1784293750108-vrhlpw5yh-slideshow *:before, #fv-chart-1784293750108-vrhlpw5yh-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784293750108-vrhlpw5yh, #fv-chart-1784293750108-vrhlpw5yh-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784293750108-vrhlpw5yh {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784293750108-vrhlpw5yh .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784293750108-vrhlpw5yh .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784293750108-vrhlpw5yh .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-expand-btn, #fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-expand-btn:hover, #fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row, #fv-chart-1784293750108-vrhlpw5yh .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784293750108-vrhlpw5yh .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-pie-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-bar-product,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-product-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-cluster,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-label-space,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-chart-space,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-benchmark-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-dropdown-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-carousel-nav-btn,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-chart-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-chart-subhead,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-header,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-vs,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784293750108-vrhlpw5yh.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784293750108-vrhlpw5yh .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster {width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-label-space {display: none !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784293750108-vrhlpw5yh.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:09:10.108Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784293750108-vrhlpw5yh" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784293750108-vrhlpw5yh-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/FByoYV8QLFjoe3etZ3n3wc.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/FByoYV8QLFjoe3etZ3n3wc.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/DPatRu3n4scCSMHe5Fsavc.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/DPatRu3n4scCSMHe5Fsavc.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before mopping</div><div class="fv-image-compare-label fv-image-compare-label-right">After mopping</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784293750108-vrhlpw5yh', false); });} else {initialize('fv-chart-1784293750108-vrhlpw5yh', false);}})();</script></div><p>Meanwhile, the S2’s obstacle avoidance saw it drive neatly around a shoe, a sock and a USB cable strewn across the floor. I was impressed by how close it got to each, with moving or ingesting anything.</p><p>Overall, the Eufy Omni S2 performed brilliantly. I would recommend using Standard intensity and Standard suction with two passes most of the time, then up the suction to Turbo or Cyclone for a deeper clean. The latter hitting just 70 decibels was also impressive — for context, my Dyson V10 stick vacuum is 90 dB at medium power.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jKHV9AVhryYWv63mrQL6q5-1920-80.jpg" alt="Eufy Omni S2 robot vacuum navigating between a sock and a shoe" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UnCTFEAtVNZCrFF3ptccn5-1920-80.jpg" alt="Eufy Omni S2 robot vacuum navigating around a shoe" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CFEooNTngg8yu9AkCsaz46-1920-80.jpg" alt="Eufy Omni S2 robot vacuum navigating a room with a shoe and a sock" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I only encountered one serious problem with the S2, and unfortunately it led to a replacement unit being provided by Eufy. The first S2 performed perfectly for a month, but developed a fault where the robot and docking station lost their connection. Several reboots and lots of advice from customer services failed to find a solution, so a second S2 was delivered and the original went back to Eufy for an inspection.</p><p>Naturally, this is disappointing for such an expensive product. But I was impressed by Eufy’s customer service department — which I approached as a customer and not a journalist — and how quickly the problem was resolved. The second unit performed perfectly throughout the rest of my test.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-s2-app"><span>Eufy Omni S2: app</span></h3><ul><li><strong>Easy to use</strong></li><li><strong>Lots of configurability</strong></li><li><strong>Also handles Eufy security products</strong></li><li><strong>Option to charge at night — great if you have an EV tariff</strong></li></ul><p>The Eufy app gets better with every revision, and today it’s one of the best robovac apps I’ve ever used. Everything is logically laid out, with just the right amount of adjustability on offer to keep both newcomers and power users happy. The app is quick, responsive and presents everything in a way that’s easy to understand.</p><p>I especially like how it adds virtual furniture to your floor maps, which makes it easier to understand the layout and visualize where the robot is. Editing floor plans also works well, with simple tools for splitting, combining and renaming rooms after the robot has created an initial (but not always accurate) map of your home. Multiple floormaps can also be created, making it easy to save a second map for your bedrooms upstairs, for example.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/u6obYD8a3cTdUqEwqsxbm-1920-80.jpg" alt="Eufy Omni S2 app screengrabs" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/z3qsSmvKm8jgjt7tQZnEm-1920-80.jpg" alt="Eufy Omni S2 app screengrabs" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Another feature I like is how pre-defined tasks can be created. I have one called “After dinner”, which tells the S2 to vacuum and mop my kitchen a certain way. A single tap of this from the Eufy app home screen, and the robot gets to work.</p><p>Since getting a puppy I’ve come to value Eufy’s child lock function, which disables the buttons on top of the robot – handy for both inquisitive children and dogs alike. I also like the off-peak charging function, where you can configure the S2 to only charge its battery at certain times of day. Since I have an electric car and an EV tariff, I’ve set the robovac to only charge at night, when my electricity is much cheaper.</p><ul><li><strong>App score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-eufy-omni-s2"><span>Should you buy the Eufy Omni S2?</span></h3><div ><table><caption>Eufy Omni S2 score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The Eufy Omni S2 really is very expensive indeed. It isn’t the most expensive robovac of all time, but it’s right up there. And while its lofty price makes alternatives look like excellent value, the S2 doesn’t necessarily feel like a rip-off. It’s a high-quality appliance that performs brilliantly and looks good too.</p></td><td  ><p>3.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Eufy knocked it out of the park with the S2’s design. It’s aesthetically pleasing, has a smaller footprint than some rivals, and the robot slips beneath most furniture. It also drives over raised rugs and thresholds better than before and keeps itself incredibly clean. All I wish is for a way to prevent the waste water tank from getting quite so pungent — frequent empties are a must!</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The Omni S2 is much better at vacuuming than the S1 was, while being just as good at mopping and navigation. All of these attributes are now top-notch, while the onboard fragrance system is a lovely extra touch and the improved ability to clamber over raised thresholds is very welcome</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>Eufy’s app is great. Its robovac section is simpler to navigate than the slightly cluttered security section, with an excellent mapping system, handy shortcuts for frequently used cleaning chores, and some little features that are massively useful — like off-peak charging and the child/pet lock.</p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-15">Buy it if</h2><div class="product"><p><strong>You want the best, regardless of price</strong></p><p>Yes, it’s very expensive. But if you want the best this might well be it. Everything about the Omni S2 contributes to a premium ownership experience, from the app and the hardware, to the fragrance, cleaning performance and self-cleaning. </p></div><div class="product"><p><strong>Mopping and vacuuming are equally important</strong></p><p>Many robovacs are better at one task than the other — Eufy’s own Omni S1 mopped far better than it vacuumed — but with the S2 excellent mopping is paired with powerful vacuuming.</p></div><div class="product"><p><strong>Self-cleaning is a must</strong></p><p>The S2’s self-cleaning abilities are the best I’ve seen. Even after weeks of use in a busy home with a puppy, the robot’s dust bin, brushes, rollers and mop are like new. My only advice is to empty the waste water tank frequently, since older dirty water really does stink when poured away.</p></div><h2 id="don-t-buy-it-if-6">Don't buy it if</h2><div class="product"><p><strong>You're on a budget</strong></p><p>There are a lot of very good robovacs that cost significantly less than the Omni S2. They don’t perform quite as well, but if you value vacuuming oliver mopping, for example, your money could be better spent (and saved!) elsewhere. If you have a lot of stairs, consider spending the same on a robovac <em>and</em> a conventional stick vacuum instead of splurging it all on the S2.</p></div><div class="product"><p><strong>You don't want ongoing costs</strong></p><p>This is a factor for all robovacs, since they mostly use dust bags and their brushes and rollers eventually need replacing. But the S2’s running costs are greater than most because Eufy sells its own mopping detergent in a specially-shaped bottle, and you’ll have to buy fragrance refills from Eufy too. Eufy’s official replacement parts kit is £80, three fragrance refills are £25 and the detergent is £20.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-eufy-omni-s2"><span>How I tested the Eufy Omni S2</span></h3><p>I lived with the Eufy Omni S2 for several weeks before writing this review. During that time it was used exclusively to vacuum the carpets and mop the floors of my house. I tested its cleaning abilities, tried some of the included fragrance diffusers, and noted how its self-cleaning systems fared after many hours of use.</p><p>I then carried out a number of specific tests to understand how well it cleans different types of debris from carpet and hard floors, how effective its mopping system is, how good it is at avoiding obstacles, and how loud it is.</p><p>First reviewed July 2026</p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/robot-vacuums/eufy-omni-s2-review</link>
                                                                            <description>
                            <![CDATA[ Eufy has taken the excellent mopping performance of the Omni S1 and paired it with vastly improved vacuuming to create one of the best robovacs I've tested. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">WQdeTgNvcatdCTZWLZQ7aB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/7nnbkAJPR2r5Geqr9o2CTX-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 19 Jul 2026 12:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Robot Vacuums]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Alistair Charlton ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oZ46mMfZNzivnpXwiVMoLf-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/7nnbkAJPR2r5Geqr9o2CTX-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Eufy Omni S2 robot vacuum cleaning oats off hard floor]]></media:description>                                                            <media:text><![CDATA[Eufy Omni S2 robot vacuum cleaning oats off hard floor]]></media:text>
                                <media:title type="plain"><![CDATA[Eufy Omni S2 robot vacuum cleaning oats off hard floor]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/7nnbkAJPR2r5Geqr9o2CTX-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-eufy-omni-s2-two-minute-review"><span>Eufy Omni S2: two-minute review</span></h3><p>Eufy’s latest flagship robotic vacuum and mop, the Omni S2 is a hugely impressive appliance that combines excellent mopping with brilliant vacuuming to create one of the best home cleaning systems you can buy. It also self-cleans so thoroughly that, after several weeks of daily use, the dust bin, rollers and mop still looked like new.</p><p>The Omni S2 uses warm water to clean its spinning mop as it goes, while also scraping away dirt and using cyclone technology to whisk dust more efficiently into the onboard bin, instead of leaving it to clog up the filters. Water is ozonated in the base station to further improve cleaning performance, and there’s an integrated detergent system too.</p><p>The robot itself can even be fitted with a fragrance diffuser, which makes your room smell nice after every clean; three different scents are included in the box and, along with the detergent, and can be replenished from Eufy’s website.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="kGcSVaipyhnnAEDrTo2A45" name="IMG_7384" alt="Eufy Omni S2 robot vacuum cleaning right beside a skirting board" src="https://cdn.mos.cms.futurecdn.net/kGcSVaipyhnnAEDrTo2A45-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>It navigates well, mostly avoiding contact with walls and doors while driving very closely to all manner of obstacles without pushing them around, driving over them or ingesting them. The S2 is good at climbing over raised carpets, rugs and door thresholds — something the Omni S1 struggled with – and the app does a great job of quickly mapping your home, with a simple editing system for labeling every room correctly, and even adding virtual furniture. </p><p>I was impressed by how quiet the Omni S2 is, even with its powerful Cyclone mode engaged, and how the base station doesn’t sound like an Airbus when emptying the robot. It’s a very expensive product, but one that looks good and performs extremely well.</p><h3 class="article-body__section" id="section-eufy-omni-s2-price-and-availability"><span>Eufy Omni S2: price and availability</span></h3><ul><li><strong>List price: $1,599 / £1,599 / AU$2,299</strong></li><li><strong>Launched: March 2026</strong></li></ul><p>Just two years on from the launch of the <a href="https://www.techradar.com/home/robot-vacuums/eufy-omni-s1-pro-review">Omni S1 Pro</a>, Eufy now has the Omni S2. This is now the company’s flagship robotic vacuum and mop, with a price, performance and feature set to match.</p><p>It carries a recommended retail price of $1,599 / £1,599 / AU$2,299, making it £300 more expensive than the S1 pro, which remains on sale. That’s an awful lot of money for a vacuum cleaner — especially when</p><p>Eufy’s own range of robovacs starts under the £150 mark, and one of my favourites — the <a href="https://www.techradar.com/home/robot-vacuums/eufy-x10-pro-omni">X10 Pro Omni</a> vacuum and mop — is a comparative snip at £599.</p><p>What does the extra £1,000 get you with the S2? More power, of course, with greater suction thanks to Eufy’s new AeroTurbo 2.0 tech, improved intelligence, greater threshold clearance, a more powerful mop, better computer vision, a self-cleaning mop, electrolysed water, integrated detergent and even a built-in fragrance system with three included scents to pick from.</p><p>An additional cost to bear in mind is Eufy’s replacement parts kit. The brushes, bags, mops and rollers of all vacuum cleaners need replacing, so ongoing costs aren’t unusual, but Eufy likes to charge plenty. A complete kit for the S2 is £79.99. Premium parts for a premium robovac, I suppose. More welcome is Eufy’s new two-year warranty, which applies to all robot vacuums launched in 2026 and doubles the previous coverage.</p><ul><li><strong>Value score: 3.5/5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-s2-specifications"><span>Eufy Omni S2: specifications</span></h3><div ><table><thead><tr><th class="firstcol " ><p><strong>Specification</strong></p></th><th  ><p><strong>Detail</strong></p><p> </p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Max suction</p></td><td  ><p>30,000 Pa</p></td></tr><tr><td class="firstcol " ><p>Robot diameter</p></td><td  ><p>350 mm</p></td></tr><tr><td class="firstcol " ><p>Robot height</p></td><td  ><p>3.4 in / 85 mm</p></td></tr><tr><td class="firstcol " ><p>Dock dimensions</p></td><td  ><p>15.0 x 17.7 x 26.4 in / 380 x 450 x 670 mm</p></td></tr><tr><td class="firstcol " ><p>Dust bin volume (base)</p></td><td  ><p>2.5 litres</p></td></tr><tr><td class="firstcol " ><p>Water tank volume (base)</p></td><td  ><p>3L (clean) 2L (dirty)</p></td></tr><tr><td class="firstcol " ><p>Base type</p></td><td  ><p>Charge, auto-empty, hot water mop wash, hot air mop dry, clean water refill, self-clean</p></td></tr><tr><td class="firstcol " ><p>Max threshold clearance</p></td><td  ><p>Up to 1.7 in / 42mm</p></td></tr><tr><td class="firstcol " ><p>Mop type</p></td><td  ><p>Self-cleaner roller</p></td></tr><tr><td class="firstcol " ><p>Mop pad lifting</p></td><td  ><p>1.10 in / 28 mm</p></td></tr><tr><td class="firstcol " ><p>Max runtime</p></td><td  ><p>180 minutes</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-eufy-omni-s2-design"><span>Eufy Omni S2: design</span></h3><ul><li><strong>Docking station with charger, dust bag, water tanks and mop drying</strong></li><li><strong>Rotating, self-cleaning mop</strong></li><li><strong>Integrated detergent and fragrance supply</strong></li></ul><p>The S2 has a similar but more refined look than its S1 predecessor. The subtle bronze tint to sections of the robot and docking station give it a premium aesthetic that blends nicely with the futuristic lighting in both the clean water tank of the dock, and the robot’s onboard dust bin.</p><p>Taller than many docking stations, but significantly more elegant than most, the Omni S2’s appearance helps to justify its lofty price tag — and that’s further aided by the display and touch controls on top of the dock. These are handily located to press without stooping down to the robot itself, while the screen is useful for checking on the robot’s status and spotting error messages.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/XQFx3y9oWPcWQf4FpzLbFX-1920-80.jpg" alt="Eufy Omni S2 robot vacuum in dock" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/npbJVa5EYdq3UvsbYwBi7X-1920-80.jpg" alt="Eufy Omni S2 robot vacuum front camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/hC9rmF3kmXJhf7QxNFxcmW-1920-80.jpg" alt="Eufy Omni S2 robot vacuum dock control panel" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/mDKY9QNwrwyj6VYnCyPYVW-1920-80.jpg" alt="Side view of Eufy Omni S2 robot vacuum" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Short of making you a cup of tea while the robot cleans up, the S2’s docking station does absolutely everything. It charges the robot, empties its dust bin, replenishes its water supply (and even ozonates fresh water before it’s fed to the mop), cleans the mop with water heated to 70 degrees centigrade, dries it with hot air, refills the detergent tank, and has enough dust bin capacity for up to a claimed 68 days between bag replacements.</p><p>The robot itself is almost circular, with a central roller that’s claimed to be 100 percent tangle free, a pair of spinning side brushes, and a roller mop that self-cleans, slides outwards by 1.5cm to reach into corners and even an onboard fragrance supply to make your home smell nice. The S2 includes three different fragrances in the box, but these are a bespoke design so replacements can only be bought from Eufy itself. The same goes for the detergent bottle too, while thankfully the 2.5-litre dust bags are generic.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/JG8VVbHNeD4meyZTnK4ChW-1920-80.jpg" alt="Eufy Omni S2 robot vacuum brushes" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/sRZM73Aw8ucJMJofqQf7VX-1920-80.jpg" alt="Eufy Omni S2 robot vacuum upside down, showing mop roller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/45eCBkJPcujkVcVujpxLhW-1920-80.jpg" alt="Eufy Omni S2 robot vacuum roller" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6brj2w4TtvLcC8CGvLFrTX-1920-80.jpg" alt="Eufy Omni S2 robot vacuum with mop roller removed" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I like how the Omni S2 looks. Its design is more sophisticated than that of the S1, and I can imagine it neatly complementing the lavish houses of its deep-pocketed buyers. And while tall, at 670mm (26.4 inches), the docking station is relatively slim.</p><p>The robot is also relatively short, at 85mm. This compares favorably against taller, bulkier robovacs like the Dyson Spot+Scrub AI, which towers over the Eufy at 110mm and is less capable of cleaning beneath low furniture.</p><p>A welcome design upgrade for the Eufy Omni S2 is its ability to now clear door thresholds up to 4.2cm tall, up from just 2cm for the Omni S1. I was often left frustrated by that robot’s inability to drive up from exposed floorboards to a carpeted neighboring room, but have had no such issues with the S2.</p><ul><li><strong>Design score: 5/5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-s2-performance"><span>Eufy Omni S2: performance</span></h3><ul><li><strong>Impressive vacuuming</strong></li><li><strong>Excellent mopping</strong></li><li><strong>Strong improvement over the S1</strong></li></ul><p>From the setup process and mapping, to vacuuming, mopping, navigation and self-cleaning, the Omni S2 is a triumph. You might say it should well be for the massive price tag, but even in 2026 it’s rare for such a complex new product to impress so universally. Where the Eufy Omni S1 struggled in some key areas — navigation, threshold clearance and sometimes even vacuuming — the S2’s performance is close to perfect.</p><p>Yes, it’s an ultra-premium product with a price to match. This is right up there with your Leica camera, Rimowa suitcase and five-figure turntable. I imagine the typical Omni S2 owner is the sort of person who wouldn't blink at splashing out on a pair of <a href="https://www.techradar.com/audio/earbuds-airpods/airpods-max-2-review">Apple AirPods Max 2</a> at the airport because they forgot their first-gens at home. They’d probably deal with a flight delay by picking up a new Swiss watch, too.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="YnnR3xtZnb2p6R8oB8uYp5" name="IMG_7396" alt="Eufy Omni S2 robot vacuum cleaning a carpeted floor" src="https://cdn.mos.cms.futurecdn.net/YnnR3xtZnb2p6R8oB8uYp5-1920-80.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>And that’s absolutely fine. Whatever the product, there’s always something that happens to sell the most expensive one, and for robotic vacuums that just so happens to be Eufy with the Omni S2. That doesn’t inherently count against it, because there are always customers happy to pay a premium for the one they like, or not really care about the cost because the S2’s spec sheet, design and feature set already put it at the top of the market.</p><p>What matters is how it performs in the real world, and how that compares to user expectations. Naturally, mine were at an all-time high and the S2 mostly delivered. The vacuuming performance is noticeably better than with the S1, and after a month of testing I still smile at the neat stripes vacuumed into my lounge carpet — and at how pleasant the S2’s fragrance system makes every room smell.</p><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="Tft3jWsLLBV9C25aEdSz6X" name="Eufy Omni S2-8" alt="Eufy Omni S2 robot vacuum battery" src="https://cdn.mos.cms.futurecdn.net/Tft3jWsLLBV9C25aEdSz6X-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Eufy has improved navigation since the S1, and now the S2 is smart enough to not vacuum over the tasselled ends of a rug. It also automatically detects rug and carpet thickness, then raises itself by up to 50mm (1.97 inches) to prevent getting stuck in deep-pile fabric. In my testing, the S2 flagged a potentially tricky bit of carpet — which was actually an integrated but deeply contoured door mat — so I could tell it to ignore the concern or permanently avoid it.</p><p>Navigation and map creation is generally good. The robot only once got stuck and called for help, and I was impressed by how quickly the S2 mapped the ground floor of my home and did a decent job of detecting room boundaries. I used the app to fine-tune these, and was pleased to see how the S2 had added 3D cupboards, sofas, tables, chairs and other bits of furniture to the map. This isn’t strictly necessary, but it’s nice to see how the S2 correctly understands its environment.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2090px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="WVmSp6qCaTqKfAmueWeBTX" name="Eufy Omni S2-13" alt="Eufy Omni S2 robot vacuum in dock, plugged in" src="https://cdn.mos.cms.futurecdn.net/WVmSp6qCaTqKfAmueWeBTX-1920-80.jpg" mos="" align="middle" fullscreen="" width="2090" height="1176" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Eufy claims a maximum suction of 30,000Pa, which is a huge upgrade over the 8,000Pa of the Omni S1 and other Eufy robots like the X10. There are four suction modes — Quiet, Standard, Turbo and Max — three options of cleaning intensity, three water levels, and the option of performing each cleaning task once or twice. As with the S1, the S2 returns to base whenever it needs to empty its bin, clean the mop, replenish its water supply or charge the battery. A mode called AI Automation promises to adjust cleaning strategy based on room type, floor material and cleaning frequency.</p><p>The Omni S2 deeply impressed during the first few weeks of general use, keeping hard floors and carpets clean — even after a cockapoo puppy joined our household, and his insistence on helping with garden projects brought a lot of dirt into the house. It was a joy, quite frankly, to have the S2 on hand, ready to clean up after every chaotic evening of dog zoomies.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1998px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="DTmi4rp3xbhFrV4ovDo3FX" name="Eufy Omni S2-3" alt="Eufy Omni S2 robot vacuum dock open" src="https://cdn.mos.cms.futurecdn.net/DTmi4rp3xbhFrV4ovDo3FX-1920-80.jpg" mos="" align="middle" fullscreen="" width="1998" height="1124" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I also loved how the S2 kept itself clean. Not only is the mop cleaned and dried with every use, but the cyclone-style dust collection ensures the onboard bin is practically spotless after each empty, and the filters don’t get clogged up. The rollers also looked like new after many hours of use, thanks to an anti-tangle design that actually works.</p><p>The mopping system works as well as the S1’s — evidenced by the absolutely filthy water collected in the waste tank of the docking station. I’d recommend owners empty this frequently, because if you wait a couple of weeks or so until it’s full, pouring it away is a seriously stinky process.</p><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="QzwSkAMEHutrNvcfz9xWXW" name="Eufy Omni S2" alt="Eufy Omni S2 robot vacuum dock screen" src="https://cdn.mos.cms.futurecdn.net/QzwSkAMEHutrNvcfz9xWXW-1920-80.jpg" mos="" align="middle" fullscreen="" width="1920" height="1080" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>During TechRadar’s standardized robovac tests the Omni S2 continued to perform very well. These tests include two rounds of vacuuming on both carpets and hard floors, plus an obstacle avoidance test and a mopping test.</p><p>Pleasingly, the Omni S2’s vacuum performance is better than its predecessor, the two-year-old Omni S1. Vacuuming up oats from carpet was particularly impressive, with not a single piece being missed (except where I set the target zone in slightly the wrong place).</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294155314-yqci7jgyv *, #fv-chart-1784294155314-yqci7jgyv *:before, #fv-chart-1784294155314-yqci7jgyv *:after, #fv-chart-1784294155314-yqci7jgyv-slideshow *, #fv-chart-1784294155314-yqci7jgyv-slideshow *:before, #fv-chart-1784294155314-yqci7jgyv-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294155314-yqci7jgyv, #fv-chart-1784294155314-yqci7jgyv-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294155314-yqci7jgyv {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294155314-yqci7jgyv .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294155314-yqci7jgyv .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294155314-yqci7jgyv .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294155314-yqci7jgyv .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-expand-btn, #fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-expand-btn:hover, #fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294155314-yqci7jgyv .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row, #fv-chart-1784294155314-yqci7jgyv .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294155314-yqci7jgyv .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294155314-yqci7jgyv .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-pie-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-bar-product,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-product-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-cluster,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-label-space,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-benchmark-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-dropdown-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-chart-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-chart-subhead,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-header,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-vs,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294155314-yqci7jgyv.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294155314-yqci7jgyv .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294155314-yqci7jgyv.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:15:55.315Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294155314-yqci7jgyv" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294155314-yqci7jgyv-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/5AX3PYNdnhsZxQ7mujM28e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/5AX3PYNdnhsZxQ7mujM28e.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/ZyrKGYN5oJBpNP5hu7PN5e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/ZyrKGYN5oJBpNP5hu7PN5e.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before vacuuming</div><div class="fv-image-compare-label fv-image-compare-label-right">After vacuuming</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294155314-yqci7jgyv', false); });} else {initialize('fv-chart-1784294155314-yqci7jgyv', false);}})();</script></div><p>During these tests I found the quickest, least powerful mode, called Quiet, was indeed very quiet (just 55 decibels on carpet), but the S2 performs best when suction is upped to the Standard or Turbo modes, cleaning intensity is increased from Fast to Standard, and the S2 is asked to perform two passes of the target zone or room, instead of one.</p><p>A crumb mix made of flour and crushed biscuit was completely lifted from a wooden kitchen floor using the S2’s standard intensity and suction settings, while on carpet I found Turbo or Cyclone (the most powerful suction mode) was best.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294463899-v6ki3xaut *, #fv-chart-1784294463899-v6ki3xaut *:before, #fv-chart-1784294463899-v6ki3xaut *:after, #fv-chart-1784294463899-v6ki3xaut-slideshow *, #fv-chart-1784294463899-v6ki3xaut-slideshow *:before, #fv-chart-1784294463899-v6ki3xaut-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294463899-v6ki3xaut, #fv-chart-1784294463899-v6ki3xaut-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294463899-v6ki3xaut {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294463899-v6ki3xaut .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294463899-v6ki3xaut .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294463899-v6ki3xaut .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294463899-v6ki3xaut .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-expand-btn, #fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-expand-btn:hover, #fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294463899-v6ki3xaut .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row, #fv-chart-1784294463899-v6ki3xaut .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294463899-v6ki3xaut .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294463899-v6ki3xaut .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-pie-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-bar-product,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-product-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-cluster,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-label-space,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-benchmark-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-dropdown-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-chart-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-chart-subhead,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-header,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-vs,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294463899-v6ki3xaut.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294463899-v6ki3xaut .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294463899-v6ki3xaut.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:21:03.899Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294463899-v6ki3xaut" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294463899-v6ki3xaut-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/UUEE6fnFvSvDKyzt2swA4e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/UUEE6fnFvSvDKyzt2swA4e.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Crumb mix before first pass</div><div class="fv-image-compare-label fv-image-compare-label-right">Crumb mix after first pass</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294463899-v6ki3xaut', false); });} else {initialize('fv-chart-1784294463899-v6ki3xaut', false);}})();</script></div><p>With that enabled, plus the intensity increased to Deep and the number of passes upped to two, the robot did a superb job.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294519188-pba2ojlaz *, #fv-chart-1784294519188-pba2ojlaz *:before, #fv-chart-1784294519188-pba2ojlaz *:after, #fv-chart-1784294519188-pba2ojlaz-slideshow *, #fv-chart-1784294519188-pba2ojlaz-slideshow *:before, #fv-chart-1784294519188-pba2ojlaz-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294519188-pba2ojlaz, #fv-chart-1784294519188-pba2ojlaz-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294519188-pba2ojlaz {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294519188-pba2ojlaz .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294519188-pba2ojlaz .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294519188-pba2ojlaz .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294519188-pba2ojlaz .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-expand-btn, #fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-expand-btn:hover, #fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294519188-pba2ojlaz .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row, #fv-chart-1784294519188-pba2ojlaz .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294519188-pba2ojlaz .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294519188-pba2ojlaz .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-pie-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-bar-product,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-product-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-cluster,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-label-space,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-benchmark-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-dropdown-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-chart-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-chart-subhead,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-header,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-vs,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294519188-pba2ojlaz.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294519188-pba2ojlaz .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294519188-pba2ojlaz.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:21:59.188Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294519188-pba2ojlaz" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294519188-pba2ojlaz-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/WapJPZGPYymaoX7Be6uK3e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/WapJPZGPYymaoX7Be6uK3e.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/m6vAPxydRzDUFFGFpx9Tkd.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Crumb mix after first pass</div><div class="fv-image-compare-label fv-image-compare-label-right">Crumb mix after second pass</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294519188-pba2ojlaz', false); });} else {initialize('fv-chart-1784294519188-pba2ojlaz', false);}})();</script></div><p>The oat test is usually tougher, because robovacs tend to flick larger debris across hard floors with their spinning side brushes. The Omni S2 fell foul of this too, but as ever my advice is to set the robot to vacuum the entire room twice, instead of aiming for a target and kicking it everywhere.</p><p>With the right settings applied, the S2 picked up every single piece – and passed the same test with flying colors on carpet too, where flicking debris is less of an issue.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294576158-jknu8qhxr *, #fv-chart-1784294576158-jknu8qhxr *:before, #fv-chart-1784294576158-jknu8qhxr *:after, #fv-chart-1784294576158-jknu8qhxr-slideshow *, #fv-chart-1784294576158-jknu8qhxr-slideshow *:before, #fv-chart-1784294576158-jknu8qhxr-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294576158-jknu8qhxr, #fv-chart-1784294576158-jknu8qhxr-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294576158-jknu8qhxr {position: relative !important; overflow: visible !important;--riv-primary: #AA1124;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #AA1124;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-select:focus {outline: 2px solid #AA1124 !important;border-color: #AA1124 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294576158-jknu8qhxr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294576158-jknu8qhxr .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294576158-jknu8qhxr .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294576158-jknu8qhxr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-expand-btn, #fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-expand-btn:hover, #fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294576158-jknu8qhxr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row, #fv-chart-1784294576158-jknu8qhxr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294576158-jknu8qhxr .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294576158-jknu8qhxr .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-pie-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-bar-product,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-product-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-cluster,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-label-space,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-benchmark-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-dropdown-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-chart-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-chart-subhead,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-header,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-vs,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294576158-jknu8qhxr.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294576158-jknu8qhxr .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784294576158-jknu8qhxr.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "Default"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:22:56.158Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","Default"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784294576158-jknu8qhxr" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784294576158-jknu8qhxr-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/iTasmqdAcCQrbxHbWESe3e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/iTasmqdAcCQrbxHbWESe3e.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/4P8Q3UcAuFMS5oZBTFY34e.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/4P8Q3UcAuFMS5oZBTFY34e.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><div class="fv-image-compare-arrow-left"></div><div class="fv-image-compare-arrow-right"></div></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before vacuuming</div><div class="fv-image-compare-label fv-image-compare-label-right">After vacuuming</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784294576158-jknu8qhxr', false); });} else {initialize('fv-chart-1784294576158-jknu8qhxr', false);}})();</script></div><p>I tested the mopping system with a dried smear of ketchup, which was promptly removed from the wooden floor. The cylindrical mop spins and pivots outwards to reach into the edges of the room, while the robot scrapes it clean and washes it while driving. The mop is then dried with hot air at the base station, which takes several hours but is very quiet.</p><div class="vizualizer-embed"><style>@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784293750108-vrhlpw5yh *, #fv-chart-1784293750108-vrhlpw5yh *:before, #fv-chart-1784293750108-vrhlpw5yh *:after, #fv-chart-1784293750108-vrhlpw5yh-slideshow *, #fv-chart-1784293750108-vrhlpw5yh-slideshow *:before, #fv-chart-1784293750108-vrhlpw5yh-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784293750108-vrhlpw5yh, #fv-chart-1784293750108-vrhlpw5yh-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784293750108-vrhlpw5yh {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784293750108-vrhlpw5yh .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784293750108-vrhlpw5yh .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784293750108-vrhlpw5yh .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-expand-btn, #fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-expand-btn:hover, #fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row, #fv-chart-1784293750108-vrhlpw5yh .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784293750108-vrhlpw5yh .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-pie-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-bar-product,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-product-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-cluster,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-label-space,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-chart-space,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-benchmark-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-dropdown-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-carousel-nav-btn,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-chart-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-chart-subhead,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-header,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-vs,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784293750108-vrhlpw5yh.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784293750108-vrhlpw5yh .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster {width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-label-space {display: none !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-y-axis-title { padding-left: 5% !important;  }#fv-chart-1784293750108-vrhlpw5yh.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}</style><script type="application/ld+json">{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:09:10.108Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}</script><div id="fv-chart-1784293750108-vrhlpw5yh" class="fv-chart-wrapper   " data-bar-labels-on-top="false" data-iframe-height="true" data-vizualizer-embed="true"><div class="fv-inner-wrapper fv-no-header fv-is-image-compare  "><div class="riv-chart-container"><div class="fv-chart-item" id="fv-chart-1784293750108-vrhlpw5yh-image-compare-1" data-chart-type="Image Comparison" data-title="Image Comparison" data-subhead="" data-caption="" style=""><div class="fv-benchmark-group"><div class="fv-image-compare-container"><div class="fv-image-compare-wrapper" data-image-compare="true"><div class="fv-image-compare-inner"><img src="https://cdn.mos.cms.futurecdn.net/FByoYV8QLFjoe3etZ3n3wc.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/FByoYV8QLFjoe3etZ3n3wc.jpg" alt="After" class="fv-image-compare-bg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><img src="https://cdn.mos.cms.futurecdn.net/DPatRu3n4scCSMHe5Fsavc.jpg" data-highres-src="https://cdn.mos.cms.futurecdn.net/DPatRu3n4scCSMHe5Fsavc.jpg" alt="Before" class="fv-image-compare-fg" loading="lazy" referrerpolicy="no-referrer" draggable="false" /><div class="fv-image-compare-slider"><div class="fv-image-compare-slider-line"></div><div class="fv-image-compare-handle "><img src="https://proof.vanilla.tools/media/images/brandLogos/techradar.png" alt="Brand Logo" style="width: 100%; height: 100%; object-fit: cover;" /></div></div></div><div class="fv-image-compare-label fv-image-compare-label-left">Before mopping</div><div class="fv-image-compare-label fv-image-compare-label-right">After mopping</div><button class="fv-image-compare-expand-btn" aria-label="Expand Image"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 8V4h4"/><path d="M20 8V4h-4"/><path d="M4 16v4h4"/><path d="M20 16v4h-4"/><circle cx="11.5" cy="11.5" r="3.5"/><path d="m14 14 3 3"/></svg></button><button class="fv-image-compare-close-btn" aria-label="Close Fullscreen"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div></div></div></div></div><div class="fv-bottom-bar"><div class="fv-footer-content" style="display: none;"><div class="rv-chart-caption" style="display: block;"><span class="fv-original-caption" style="display: block;"></span><span class="fv-ia-dynamic-caption" style="display: none;"></span></div></div><div class="fv-logo-explore-bar"><img class="fv-logo" src="https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" alt="TechRadar Logo" /></div></div></div></div><script>window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.2.11/iframeResizer.contentWindow.min.js" async=""></script><script>(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1784293750108-vrhlpw5yh', false); });} else {initialize('fv-chart-1784293750108-vrhlpw5yh', false);}})();</script></div><p>Meanwhile, the S2’s obstacle avoidance saw it drive neatly around a shoe, a sock and a USB cable strewn across the floor. I was impressed by how close it got to each, with moving or ingesting anything.</p><p>Overall, the Eufy Omni S2 performed brilliantly. I would recommend using Standard intensity and Standard suction with two passes most of the time, then up the suction to Turbo or Cyclone for a deeper clean. The latter hitting just 70 decibels was also impressive — for context, my Dyson V10 stick vacuum is 90 dB at medium power.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/jKHV9AVhryYWv63mrQL6q5-1920-80.jpg" alt="Eufy Omni S2 robot vacuum navigating between a sock and a shoe" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/UnCTFEAtVNZCrFF3ptccn5-1920-80.jpg" alt="Eufy Omni S2 robot vacuum navigating around a shoe" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/CFEooNTngg8yu9AkCsaz46-1920-80.jpg" alt="Eufy Omni S2 robot vacuum navigating a room with a shoe and a sock" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>I only encountered one serious problem with the S2, and unfortunately it led to a replacement unit being provided by Eufy. The first S2 performed perfectly for a month, but developed a fault where the robot and docking station lost their connection. Several reboots and lots of advice from customer services failed to find a solution, so a second S2 was delivered and the original went back to Eufy for an inspection.</p><p>Naturally, this is disappointing for such an expensive product. But I was impressed by Eufy’s customer service department — which I approached as a customer and not a journalist — and how quickly the problem was resolved. The second unit performed perfectly throughout the rest of my test.</p><ul><li><strong>Performance score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-eufy-omni-s2-app"><span>Eufy Omni S2: app</span></h3><ul><li><strong>Easy to use</strong></li><li><strong>Lots of configurability</strong></li><li><strong>Also handles Eufy security products</strong></li><li><strong>Option to charge at night — great if you have an EV tariff</strong></li></ul><p>The Eufy app gets better with every revision, and today it’s one of the best robovac apps I’ve ever used. Everything is logically laid out, with just the right amount of adjustability on offer to keep both newcomers and power users happy. The app is quick, responsive and presents everything in a way that’s easy to understand.</p><p>I especially like how it adds virtual furniture to your floor maps, which makes it easier to understand the layout and visualize where the robot is. Editing floor plans also works well, with simple tools for splitting, combining and renaming rooms after the robot has created an initial (but not always accurate) map of your home. Multiple floormaps can also be created, making it easy to save a second map for your bedrooms upstairs, for example.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/u6obYD8a3cTdUqEwqsxbm-1920-80.jpg" alt="Eufy Omni S2 app screengrabs" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/z3qsSmvKm8jgjt7tQZnEm-1920-80.jpg" alt="Eufy Omni S2 app screengrabs" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Another feature I like is how pre-defined tasks can be created. I have one called “After dinner”, which tells the S2 to vacuum and mop my kitchen a certain way. A single tap of this from the Eufy app home screen, and the robot gets to work.</p><p>Since getting a puppy I’ve come to value Eufy’s child lock function, which disables the buttons on top of the robot – handy for both inquisitive children and dogs alike. I also like the off-peak charging function, where you can configure the S2 to only charge its battery at certain times of day. Since I have an electric car and an EV tariff, I’ve set the robovac to only charge at night, when my electricity is much cheaper.</p><ul><li><strong>App score: 4.5/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-eufy-omni-s2"><span>Should you buy the Eufy Omni S2?</span></h3><div ><table><caption>Eufy Omni S2 score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>The Eufy Omni S2 really is very expensive indeed. It isn’t the most expensive robovac of all time, but it’s right up there. And while its lofty price makes alternatives look like excellent value, the S2 doesn’t necessarily feel like a rip-off. It’s a high-quality appliance that performs brilliantly and looks good too.</p></td><td  ><p>3.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Eufy knocked it out of the park with the S2’s design. It’s aesthetically pleasing, has a smaller footprint than some rivals, and the robot slips beneath most furniture. It also drives over raised rugs and thresholds better than before and keeps itself incredibly clean. All I wish is for a way to prevent the waste water tank from getting quite so pungent — frequent empties are a must!</p></td><td  ><p>5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>The Omni S2 is much better at vacuuming than the S1 was, while being just as good at mopping and navigation. All of these attributes are now top-notch, while the onboard fragrance system is a lovely extra touch and the improved ability to clamber over raised thresholds is very welcome</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>App</p></td><td  ><p>Eufy’s app is great. Its robovac section is simpler to navigate than the slightly cluttered security section, with an excellent mapping system, handy shortcuts for frequently used cleaning chores, and some little features that are massively useful — like off-peak charging and the child/pet lock.</p></td><td  ><p>5/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-15">Buy it if</h2><div class="product"><p><strong>You want the best, regardless of price</strong></p><p>Yes, it’s very expensive. But if you want the best this might well be it. Everything about the Omni S2 contributes to a premium ownership experience, from the app and the hardware, to the fragrance, cleaning performance and self-cleaning. </p></div><div class="product"><p><strong>Mopping and vacuuming are equally important</strong></p><p>Many robovacs are better at one task than the other — Eufy’s own Omni S1 mopped far better than it vacuumed — but with the S2 excellent mopping is paired with powerful vacuuming.</p></div><div class="product"><p><strong>Self-cleaning is a must</strong></p><p>The S2’s self-cleaning abilities are the best I’ve seen. Even after weeks of use in a busy home with a puppy, the robot’s dust bin, brushes, rollers and mop are like new. My only advice is to empty the waste water tank frequently, since older dirty water really does stink when poured away.</p></div><h2 id="don-t-buy-it-if-6">Don't buy it if</h2><div class="product"><p><strong>You're on a budget</strong></p><p>There are a lot of very good robovacs that cost significantly less than the Omni S2. They don’t perform quite as well, but if you value vacuuming oliver mopping, for example, your money could be better spent (and saved!) elsewhere. If you have a lot of stairs, consider spending the same on a robovac <em>and</em> a conventional stick vacuum instead of splurging it all on the S2.</p></div><div class="product"><p><strong>You don't want ongoing costs</strong></p><p>This is a factor for all robovacs, since they mostly use dust bags and their brushes and rollers eventually need replacing. But the S2’s running costs are greater than most because Eufy sells its own mopping detergent in a specially-shaped bottle, and you’ll have to buy fragrance refills from Eufy too. Eufy’s official replacement parts kit is £80, three fragrance refills are £25 and the detergent is £20.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-eufy-omni-s2"><span>How I tested the Eufy Omni S2</span></h3><p>I lived with the Eufy Omni S2 for several weeks before writing this review. During that time it was used exclusively to vacuum the carpets and mop the floors of my house. I tested its cleaning abilities, tried some of the included fragrance diffusers, and noted how its self-cleaning systems fared after many hours of use.</p><p>I then carried out a number of specific tests to understand how well it cleans different types of debris from carpet and hard floors, how effective its mopping system is, how good it is at avoiding obstacles, and how loud it is.</p><p>First reviewed July 2026</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Dimplex FlexBlade review: a multi-directional fan that doesn't quite have the power I expected ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-dimplex-flexblade-multi-directional-bladeless-fan-two-minute-review"><span>Dimplex FlexBlade Multi-Directional Bladeless Fan: two minute review</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:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DDmAdDK4guxAHfmwVVX24" name="Dimplex FlexBlade" alt="Dimplex FlexBlade" src="https://cdn.mos.cms.futurecdn.net/DDmAdDK4guxAHfmwVVX24-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Vertically aligning the fan vents makes the FlexBlade easy to store. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Specifications</div><div class="fancy_box_body"><p class="fancy-box__body-text">Type: Tower</p><p class="fancy-box__body-text">Speeds: 5</p><p class="fancy-box__body-text">Oscillation: horizontal 30, 60, or 90 degrees</p><p class="fancy-box__body-text">Vertical tilt: each blade can rotate 180 degrees</p><p class="fancy-box__body-text">Dimensions (H x W x D): 32.6 x 27.9 x 14.6 inches / 82.8 x 70.8 x 37cm (blades horizontal), 43.1 x 12.6 x 14.6 inches / 109.5 x 32 x 37cm (blades vertical)</p><p class="fancy-box__body-text">Controls: power, speed, timer, plus remote control</p><p class="fancy-box__body-text">Noise level: 36dB to 58dB</p></div></div><p>The Dimplex FlexBlade isn't your traditional tower fan, although you can use it as one. It's bladeless, Dyson-style, so it delivers smooth airflow without the buffeting of a bladed fan. </p><p>The design is very flexible, enabling you to use it as a T-shaped floor fan, a vertical pedestal fan, or any angle in between. Air comes out of two wide vents, and those vents can be rotated 90 degrees in either direction so that you can have wider airflow or cool two areas simultaneously. That could be useful in shared spaces such as offices, although as the fan's stand isn't telescopic, one of you will get a cool back while the other gets cool legs. </p><p>The FlexBlade looks like it'll be extremely powerful but the strength of airflow drops off quickly with distance, so at full power with both blades pointing forward it felt like a breeze at three meters. It's fairly quiet, though, and delivers similar airflow and noise levels to our trusty Dyson Hot+Cool fan.</p><p>This isn't the most powerful floor fan we've tested by any means but it does move a decent amount of air and that flexible design makes it useful for multiple applications, such as the bedroom at night and home office or living room during the day. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G6VjoKkrj7DXgNp9BdGsXo" name="Dimplex FlexBlade" alt="Dimplex FlexBlade in a kitchen" src="https://cdn.mos.cms.futurecdn.net/G6VjoKkrj7DXgNp9BdGsXo-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade is very wide in horizontal mode but you can angle it through 90 degrees. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-price-and-availability"><span>Dimplex FlexBlade fan review: price and availability</span></h3><ul><li><strong>Launched June 2026</strong></li><li><strong>UK only</strong></li><li><strong>£199.99 (about $160 / AU$230)</strong></li></ul><p>With fortunate timing, the FlexBlade launched during a month of record-breaking heat in the UK. The Dimplex FlexBlade Multi-Directional Bladeless Fan launched in the UK in June 2026 with a recommended retail price of £199.99 (about $160 / AU$230). It isn't currently available in Australia, and Dimplex doesn't sell its home cooling products in the US. </p><p>I'm writing this as more really hot weather is toasting the UK, so I need to temper my usual buying advice with the fact that for many people the only criteria for a fan right now are 'will it cool me down?' and 'is it in stock?', to which the answers are yes and at the time of writing, yes. But I would point out that <a href="https://www.techradar.com/seasonal-sales/i-slept-under-a-blanket-of-cool-air-last-night-thanks-to-this-clever-adjustable-tower-fan-and-theres-a-huge-gbp76-off-for-prime-day">Dimplex dropped the price to just £123 for Amazon Prime Day 2026</a>, so if you're not reading this in sweltering temperatures you can expect similar discounts in the cooler months when demand sags.</p><p><strong>Value for money: 4/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZStjsuxuSK6pbo2HfY97Wo" name="Dimplex FlexBlade" alt="Adjusting the rotating vent on the Dimplex FlexBlade" src="https://cdn.mos.cms.futurecdn.net/ZStjsuxuSK6pbo2HfY97Wo-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The two vent arms can be manually rotated independently to blow air in two directions </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-design"><span>Dimplex FlexBlade fan review: design</span></h3><ul><li><strong>Horizontal and vertical adjustment</strong></li><li><strong>Horizontal oscillation</strong></li><li><strong>Simple but effective controls</strong></li></ul><p>I can't talk about the design of the Dimplex FlexBlade without addressing the elephant in the room, or rather the Shark: the <a href="https://www.techradar.com/home/air-quality/shark-turboblade-fan-review">Shark TurboBlade</a> cooling fan, which seems to have inspired Dimplex's designers. Both have a propeller-esque T-shaped design with two independent, rotatable bladeless vents. Both can pivot from horizontal to vertical mode. Both project air up to 20 meters. Both have a magnetic remote control. Both have a quiet sleep mode. And both have multiple speed settings: 10 for the Shark and five for the Dimplex. I think the Shark is a little nicer looking, more flexible thanks to its telescopic pole and less top-heavy — the Dimplex wobbles a bit when you touch it — but it's also £50 (about $70 / AU$100) more expensive when it's not in the sales.</p><p>The FlexBlade arrives in six parts: the main motor unit, a two-part riser with a heavy base, and the two vents. It's simple and quick to put together – the only tool required is the provided Allen key for securing the base — and the remote attaches magnetically to the top of the unit so it's always handy. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CYVo7gtjyXf48SHWwGfE5" name="Dimplex FlexBlade" alt="Dimplex FlexBlade angled 45 degrees" src="https://cdn.mos.cms.futurecdn.net/CYVo7gtjyXf48SHWwGfE5-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade can be angled horizontally, vertically or in between, and it oscillates up to 90 degrees. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Controls are kept to a minimum on the fan itself: power/speed, oscillation and timer. The remote is simple too, with the addition of dedicated speed up/down buttons, a full speed button and a sleep mode button to put the fan into its lowest power state overnight.</p><p>The T-shaped, two-vent design delivers a lot of flexibility. You can't adjust the 1.1m height of the main motor unit but you can position the two blades vertically, horizontally or in between, and you can rotate them independently up to 180 degrees to push air in two opposite directions at once. The rotating blades are a little stiff but not awkwardly so. The blade adjustments are manual but the fan itself can oscillate automatically, delivering horizontal oscillation of 30, 60 or 90 degrees.</p><p><strong>Design: 4/5</strong></p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GFDbFchEfDRGspCLRNrcVo-1920-80.png" alt="The controls on top of the Dimplex FlexBlade" /><figcaption>The on-board controls are simple: timer, power/speed and oscillation.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JMiDHnmo3MMTwuDNvBGoWo-1920-80.png" alt="Dimplex FlexBlade showing the indicator lights" /><figcaption>The illuminated dots on the front show the current fan speed. There are five settings.<small role="credit">Future</small></figcaption></figure></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-performance"><span>Dimplex FlexBlade fan review: performance</span></h3><ul><li><strong>Oscillation and adjustable vents</strong></li><li><strong>Quieter than similar rivals</strong></li><li><strong>Best experienced reasonably close</strong></li></ul><p>The Dimplex promises airflow in excess of 6m/s with a 20-meter range and 90-degree sweep, but at full power with both blades pointed directly at me from three meters away it felt like a very mild breeze. At that distance and with the blades arranged vertically the remote control was very hit and miss.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j839FaZDjRAKXhak5Fti" name="Dimplex FlexBlade" alt="Dimplex FlexBlade remote control" src="https://cdn.mos.cms.futurecdn.net/j839FaZDjRAKXhak5Fti-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade comes with a straightforward remote control. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Dimplex is a bit quieter than the Shark – Dimplex's figures say it's 36dB at its lowest setting and 58dB at full pelt, compared to the Shark's 40dB to 66dB – but it still gets loud at higher fan speeds with the telltale whoosh we've come to expect from bladeless fans. It's not Dyson hand dryer loud at full power, though; it's more like a hair dryer on a very low setting.</p><p>I compared the Dimplex's airflow to two other room fans: a Dyson Pure Hot + Cool and a Meaco Sefte 10-inch air circulator. Both the Dimplex and the Dyson are bladeless and moved air a similar distance with similar noise levels, although the Dyson's wider diffusion mode made its output quieter at the expense of focused air. But the Meaco was quieter than both and delivered significantly stronger airflow across a large living room.</p><p><strong>Performance: 3/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vA6BYE55jiyJ5rpvYq8rMo" name="Dimplex FlexBlade" alt="Close up of the Dimplex FlexBlade remote on its magnetic perch" src="https://cdn.mos.cms.futurecdn.net/vA6BYE55jiyJ5rpvYq8rMo-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade has a magnetic perch to keep the remote handy. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-should-you-buy-it"><span>Dimplex FlexBlade fan review: should you buy it?</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Value</strong></p></td><td  ><p>Previous Prime Day pricing suggests that the list price is a little high.</p></td><td  ><p>3/5</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>It looks very like a Shark, but it's well made and feels solid; controls are straightforward and the flexible airflow is clever.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p><strong>Performance</strong></p></td><td  ><p>Not as powerful as it looks, and venting in two directions reduces airflow in each direction.</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-16">Buy it if...</h2><div class="product"><p><strong>You like to share</strong></p><p>Unlike traditional fans the FlexBlade can cool in two directions simultaneously with or without oscillation.</p></div><div class="product"><p><strong>You like planes</strong></p><p>The twin-blade design resembles a propellor or wings, and arranged vertically it looks like something from a space programme.</p></div><div class="product"><p><strong>You need flexibility</strong></p><p>It's easy to direct air exactly where you need it to go.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c26f387c-803c-11f1-889f-5fd66b925a08" data-action="Deal Block" data-label="You need flexibilityIt's easy to direct air exactly where you need it to go." data-dimension48="You need flexibilityIt's easy to direct air exactly where you need it to go." data-dimension25="">View Deal</a></p></div><h2 id="don-t-buy-it-if-7">Don't buy it if...</h2><div class="product"><p><strong>You want all the airflow</strong></p><p>Bi-directional venting inevitably mean splitting the output in two.</p></div><div class="product"><p><strong>Your space is big</strong></p><p>An air circulator is likely to do a better job cooling large rooms and similarly big spaces.</p></div><div class="product"><p><strong>You like a bargain</strong></p><p>The Dimplex FlexBlade was much cheaper during Prime Day 2026.</p></div><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-also-consider"><span>Dimplex FlexBlade fan review: also consider</span></h3><div class="product"><a data-dimension112="c26f3afc-803c-11f1-b21e-9b5ffec06282" data-action="Deal Block" data-label="Meaco's Sefte table and pedestal air circulators" data-dimension48="Meaco's Sefte table and pedestal air circulators" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:536px;"><p class="vanilla-image-block" style="padding-top:99.81%;"><img id="tY25YSqrEJed95Cm7rVBNd" name="sefte" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tY25YSqrEJed95Cm7rVBNd-1920-80.jpg" mos="" align="middle" fullscreen="" width="536" height="535" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Meaco Sefte 8in Portable Air Circulator</strong></p><p>The Shark TurboBlade is the closest rival in terms of this kind of design. But if you don't need the bi-directional air of the Dimplex or Shark I'm an evangelist for <a href="https://www.techradar.com/home/small-appliances/meaco-sefte-pro-10in-air-circulator-review" data-dimension112="c26f3afc-803c-11f1-b21e-9b5ffec06282" data-action="Deal Block" data-label="Meaco's Sefte table and pedestal air circulators" data-dimension48="Meaco's Sefte table and pedestal air circulators" data-dimension25="">Meaco's Sefte table and pedestal air circulators</a>, of which I've bought three so far for my family. They're astonishingly quiet, very powerful and oscillate both vertically and horizontally to really move air around the room. </p><p>Unfortunately the big ones are sold out and apparently won't be back in stock until October 2026. However, there is an eight-inch rechargeable model with a list price of £79.99 (about $110 / AU$150) that's in stock at the time of writing. It pushes air up to 17 meters and runs as quietly as 27dB.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c26f3afc-803c-11f1-b21e-9b5ffec06282" data-action="Deal Block" data-label="Meaco's Sefte table and pedestal air circulators" data-dimension48="Meaco's Sefte table and pedestal air circulators" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-how-we-tested"><span>Dimplex FlexBlade fan review: how we tested</span></h3><p>I tested the FlexBlade for a week at my home in Scotland during July 2026's UK heatwave. Scotland escaped the worst, because while England boiled the temperatures here were milder, peaking at 27ºC / 80.6ºF. That's hot enough to need a powerful fan but not so hot that I was crawling into my freezer or taking cold showers fully clothed.</p><p>I work from home in a long downstairs room that gets sunshine from both directions during the day, and that means it's often warmer inside than out – especially in the evening, as UK homes are typically made to retain heat rather than reflect it. I tested the FlexBlade as a daytime fan in my living room/office and as a bedroom fan overnight to see if it could keep me cool during the day, cool my family in the evening and help me sleep better at night.</p><p><em>First tested July 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/air-quality/dimplex-flexblade-review</link>
                                                                            <description>
                            <![CDATA[ The FlexBlade is clever and very flexible, but it's best experienced fairly close –especially in bi-directional mode. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">aSyqWnkLaxVQLjKrkcqxbc</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/kcvjcZQx6Y9yqS2EjgKoUo-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Sun, 19 Jul 2026 07:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Air Quality]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Carrie Marshall ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xJGRRy6MkKwN3qJ5X6enZG-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/kcvjcZQx6Y9yqS2EjgKoUo-1920-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Dimplex FlexBlade photographed outside on a sunny day]]></media:description>                                                            <media:text><![CDATA[Dimplex FlexBlade photographed outside on a sunny day]]></media:text>
                                <media:title type="plain"><![CDATA[Dimplex FlexBlade photographed outside on a sunny day]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/kcvjcZQx6Y9yqS2EjgKoUo-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-dimplex-flexblade-multi-directional-bladeless-fan-two-minute-review"><span>Dimplex FlexBlade Multi-Directional Bladeless Fan: two minute review</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:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="DDmAdDK4guxAHfmwVVX24" name="Dimplex FlexBlade" alt="Dimplex FlexBlade" src="https://cdn.mos.cms.futurecdn.net/DDmAdDK4guxAHfmwVVX24-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Vertically aligning the fan vents makes the FlexBlade easy to store. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Specifications</div><div class="fancy_box_body"><p class="fancy-box__body-text">Type: Tower</p><p class="fancy-box__body-text">Speeds: 5</p><p class="fancy-box__body-text">Oscillation: horizontal 30, 60, or 90 degrees</p><p class="fancy-box__body-text">Vertical tilt: each blade can rotate 180 degrees</p><p class="fancy-box__body-text">Dimensions (H x W x D): 32.6 x 27.9 x 14.6 inches / 82.8 x 70.8 x 37cm (blades horizontal), 43.1 x 12.6 x 14.6 inches / 109.5 x 32 x 37cm (blades vertical)</p><p class="fancy-box__body-text">Controls: power, speed, timer, plus remote control</p><p class="fancy-box__body-text">Noise level: 36dB to 58dB</p></div></div><p>The Dimplex FlexBlade isn't your traditional tower fan, although you can use it as one. It's bladeless, Dyson-style, so it delivers smooth airflow without the buffeting of a bladed fan. </p><p>The design is very flexible, enabling you to use it as a T-shaped floor fan, a vertical pedestal fan, or any angle in between. Air comes out of two wide vents, and those vents can be rotated 90 degrees in either direction so that you can have wider airflow or cool two areas simultaneously. That could be useful in shared spaces such as offices, although as the fan's stand isn't telescopic, one of you will get a cool back while the other gets cool legs. </p><p>The FlexBlade looks like it'll be extremely powerful but the strength of airflow drops off quickly with distance, so at full power with both blades pointing forward it felt like a breeze at three meters. It's fairly quiet, though, and delivers similar airflow and noise levels to our trusty Dyson Hot+Cool fan.</p><p>This isn't the most powerful floor fan we've tested by any means but it does move a decent amount of air and that flexible design makes it useful for multiple applications, such as the bedroom at night and home office or living room during the day. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="G6VjoKkrj7DXgNp9BdGsXo" name="Dimplex FlexBlade" alt="Dimplex FlexBlade in a kitchen" src="https://cdn.mos.cms.futurecdn.net/G6VjoKkrj7DXgNp9BdGsXo-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade is very wide in horizontal mode but you can angle it through 90 degrees. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-price-and-availability"><span>Dimplex FlexBlade fan review: price and availability</span></h3><ul><li><strong>Launched June 2026</strong></li><li><strong>UK only</strong></li><li><strong>£199.99 (about $160 / AU$230)</strong></li></ul><p>With fortunate timing, the FlexBlade launched during a month of record-breaking heat in the UK. The Dimplex FlexBlade Multi-Directional Bladeless Fan launched in the UK in June 2026 with a recommended retail price of £199.99 (about $160 / AU$230). It isn't currently available in Australia, and Dimplex doesn't sell its home cooling products in the US. </p><p>I'm writing this as more really hot weather is toasting the UK, so I need to temper my usual buying advice with the fact that for many people the only criteria for a fan right now are 'will it cool me down?' and 'is it in stock?', to which the answers are yes and at the time of writing, yes. But I would point out that <a href="https://www.techradar.com/seasonal-sales/i-slept-under-a-blanket-of-cool-air-last-night-thanks-to-this-clever-adjustable-tower-fan-and-theres-a-huge-gbp76-off-for-prime-day">Dimplex dropped the price to just £123 for Amazon Prime Day 2026</a>, so if you're not reading this in sweltering temperatures you can expect similar discounts in the cooler months when demand sags.</p><p><strong>Value for money: 4/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZStjsuxuSK6pbo2HfY97Wo" name="Dimplex FlexBlade" alt="Adjusting the rotating vent on the Dimplex FlexBlade" src="https://cdn.mos.cms.futurecdn.net/ZStjsuxuSK6pbo2HfY97Wo-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The two vent arms can be manually rotated independently to blow air in two directions </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-design"><span>Dimplex FlexBlade fan review: design</span></h3><ul><li><strong>Horizontal and vertical adjustment</strong></li><li><strong>Horizontal oscillation</strong></li><li><strong>Simple but effective controls</strong></li></ul><p>I can't talk about the design of the Dimplex FlexBlade without addressing the elephant in the room, or rather the Shark: the <a href="https://www.techradar.com/home/air-quality/shark-turboblade-fan-review">Shark TurboBlade</a> cooling fan, which seems to have inspired Dimplex's designers. Both have a propeller-esque T-shaped design with two independent, rotatable bladeless vents. Both can pivot from horizontal to vertical mode. Both project air up to 20 meters. Both have a magnetic remote control. Both have a quiet sleep mode. And both have multiple speed settings: 10 for the Shark and five for the Dimplex. I think the Shark is a little nicer looking, more flexible thanks to its telescopic pole and less top-heavy — the Dimplex wobbles a bit when you touch it — but it's also £50 (about $70 / AU$100) more expensive when it's not in the sales.</p><p>The FlexBlade arrives in six parts: the main motor unit, a two-part riser with a heavy base, and the two vents. It's simple and quick to put together – the only tool required is the provided Allen key for securing the base — and the remote attaches magnetically to the top of the unit so it's always handy. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="CYVo7gtjyXf48SHWwGfE5" name="Dimplex FlexBlade" alt="Dimplex FlexBlade angled 45 degrees" src="https://cdn.mos.cms.futurecdn.net/CYVo7gtjyXf48SHWwGfE5-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade can be angled horizontally, vertically or in between, and it oscillates up to 90 degrees. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Controls are kept to a minimum on the fan itself: power/speed, oscillation and timer. The remote is simple too, with the addition of dedicated speed up/down buttons, a full speed button and a sleep mode button to put the fan into its lowest power state overnight.</p><p>The T-shaped, two-vent design delivers a lot of flexibility. You can't adjust the 1.1m height of the main motor unit but you can position the two blades vertically, horizontally or in between, and you can rotate them independently up to 180 degrees to push air in two opposite directions at once. The rotating blades are a little stiff but not awkwardly so. The blade adjustments are manual but the fan itself can oscillate automatically, delivering horizontal oscillation of 30, 60 or 90 degrees.</p><p><strong>Design: 4/5</strong></p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/GFDbFchEfDRGspCLRNrcVo-1920-80.png" alt="The controls on top of the Dimplex FlexBlade" /><figcaption>The on-board controls are simple: timer, power/speed and oscillation.<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/JMiDHnmo3MMTwuDNvBGoWo-1920-80.png" alt="Dimplex FlexBlade showing the indicator lights" /><figcaption>The illuminated dots on the front show the current fan speed. There are five settings.<small role="credit">Future</small></figcaption></figure></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-performance"><span>Dimplex FlexBlade fan review: performance</span></h3><ul><li><strong>Oscillation and adjustable vents</strong></li><li><strong>Quieter than similar rivals</strong></li><li><strong>Best experienced reasonably close</strong></li></ul><p>The Dimplex promises airflow in excess of 6m/s with a 20-meter range and 90-degree sweep, but at full power with both blades pointed directly at me from three meters away it felt like a very mild breeze. At that distance and with the blades arranged vertically the remote control was very hit and miss.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j839FaZDjRAKXhak5Fti" name="Dimplex FlexBlade" alt="Dimplex FlexBlade remote control" src="https://cdn.mos.cms.futurecdn.net/j839FaZDjRAKXhak5Fti-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade comes with a straightforward remote control. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Dimplex is a bit quieter than the Shark – Dimplex's figures say it's 36dB at its lowest setting and 58dB at full pelt, compared to the Shark's 40dB to 66dB – but it still gets loud at higher fan speeds with the telltale whoosh we've come to expect from bladeless fans. It's not Dyson hand dryer loud at full power, though; it's more like a hair dryer on a very low setting.</p><p>I compared the Dimplex's airflow to two other room fans: a Dyson Pure Hot + Cool and a Meaco Sefte 10-inch air circulator. Both the Dimplex and the Dyson are bladeless and moved air a similar distance with similar noise levels, although the Dyson's wider diffusion mode made its output quieter at the expense of focused air. But the Meaco was quieter than both and delivered significantly stronger airflow across a large living room.</p><p><strong>Performance: 3/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vA6BYE55jiyJ5rpvYq8rMo" name="Dimplex FlexBlade" alt="Close up of the Dimplex FlexBlade remote on its magnetic perch" src="https://cdn.mos.cms.futurecdn.net/vA6BYE55jiyJ5rpvYq8rMo-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The FlexBlade has a magnetic perch to keep the remote handy. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-should-you-buy-it"><span>Dimplex FlexBlade fan review: should you buy it?</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Value</strong></p></td><td  ><p>Previous Prime Day pricing suggests that the list price is a little high.</p></td><td  ><p>3/5</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>It looks very like a Shark, but it's well made and feels solid; controls are straightforward and the flexible airflow is clever.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p><strong>Performance</strong></p></td><td  ><p>Not as powerful as it looks, and venting in two directions reduces airflow in each direction.</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-16">Buy it if...</h2><div class="product"><p><strong>You like to share</strong></p><p>Unlike traditional fans the FlexBlade can cool in two directions simultaneously with or without oscillation.</p></div><div class="product"><p><strong>You like planes</strong></p><p>The twin-blade design resembles a propellor or wings, and arranged vertically it looks like something from a space programme.</p></div><div class="product"><p><strong>You need flexibility</strong></p><p>It's easy to direct air exactly where you need it to go.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c26f387c-803c-11f1-889f-5fd66b925a08" data-action="Deal Block" data-label="You need flexibilityIt's easy to direct air exactly where you need it to go." data-dimension48="You need flexibilityIt's easy to direct air exactly where you need it to go." data-dimension25="">View Deal</a></p></div><h2 id="don-t-buy-it-if-7">Don't buy it if...</h2><div class="product"><p><strong>You want all the airflow</strong></p><p>Bi-directional venting inevitably mean splitting the output in two.</p></div><div class="product"><p><strong>Your space is big</strong></p><p>An air circulator is likely to do a better job cooling large rooms and similarly big spaces.</p></div><div class="product"><p><strong>You like a bargain</strong></p><p>The Dimplex FlexBlade was much cheaper during Prime Day 2026.</p></div><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-also-consider"><span>Dimplex FlexBlade fan review: also consider</span></h3><div class="product"><a data-dimension112="c26f3afc-803c-11f1-b21e-9b5ffec06282" data-action="Deal Block" data-label="Meaco's Sefte table and pedestal air circulators" data-dimension48="Meaco's Sefte table and pedestal air circulators" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:536px;"><p class="vanilla-image-block" style="padding-top:99.81%;"><img id="tY25YSqrEJed95Cm7rVBNd" name="sefte" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tY25YSqrEJed95Cm7rVBNd-1920-80.jpg" mos="" align="middle" fullscreen="" width="536" height="535" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Meaco Sefte 8in Portable Air Circulator</strong></p><p>The Shark TurboBlade is the closest rival in terms of this kind of design. But if you don't need the bi-directional air of the Dimplex or Shark I'm an evangelist for <a href="https://www.techradar.com/home/small-appliances/meaco-sefte-pro-10in-air-circulator-review" data-dimension112="c26f3afc-803c-11f1-b21e-9b5ffec06282" data-action="Deal Block" data-label="Meaco's Sefte table and pedestal air circulators" data-dimension48="Meaco's Sefte table and pedestal air circulators" data-dimension25="">Meaco's Sefte table and pedestal air circulators</a>, of which I've bought three so far for my family. They're astonishingly quiet, very powerful and oscillate both vertically and horizontally to really move air around the room. </p><p>Unfortunately the big ones are sold out and apparently won't be back in stock until October 2026. However, there is an eight-inch rechargeable model with a list price of £79.99 (about $110 / AU$150) that's in stock at the time of writing. It pushes air up to 17 meters and runs as quietly as 27dB.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="c26f3afc-803c-11f1-b21e-9b5ffec06282" data-action="Deal Block" data-label="Meaco's Sefte table and pedestal air circulators" data-dimension48="Meaco's Sefte table and pedestal air circulators" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-dimplex-flexblade-fan-review-how-we-tested"><span>Dimplex FlexBlade fan review: how we tested</span></h3><p>I tested the FlexBlade for a week at my home in Scotland during July 2026's UK heatwave. Scotland escaped the worst, because while England boiled the temperatures here were milder, peaking at 27ºC / 80.6ºF. That's hot enough to need a powerful fan but not so hot that I was crawling into my freezer or taking cold showers fully clothed.</p><p>I work from home in a long downstairs room that gets sunshine from both directions during the day, and that means it's often warmer inside than out – especially in the evening, as UK homes are typically made to retain heat rather than reflect it. I tested the FlexBlade as a daytime fan in my living room/office and as a bedroom fan overnight to see if it could keep me cool during the day, cool my family in the evening and help me sleep better at night.</p><p><em>First tested July 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Laifen T1 Pro review: an Apple-esque aesthetic that's not backed up by the shave ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-laifen-t1-pro-two-minute-review"><span>Laifen T1 Pro: two-minute review</span></h3><p>On first impressions, the Laifen T1 Pro wows. Open the box and you're greeted with Apple-inspired packaging, while the shaver itself immediately looks the part. Its CNC-machined unibody aluminium body looks and feels genuinely premium and, if you're used to cheaper shavers like the Philips OneBlade – my usual razor – it's impossible not to grin at the magnetically attached shaving head, which somehow manages to feel genuinely futuristic.</p><p>Modern conveniences like USB-C charging, an aeroplane mode to stop the power button being pressed in your bag while travelling and IPX7 waterproofing all add to the premium feel. Based on the spec sheet and those first impressions, you'd be forgiven for thinking the Laifen T1 Pro was one of the <a href="https://www.techradar.com/best/best-electric-razors-and-beard-trimmers">best electric shavers</a> on the market.</p><p>The problem is that, with a shaver, the only thing that really matters is the shave itself, and that's where the Laifen T1 Po disappoints. I shave twice a week and have fairly coarse stubble, and despite repeated attempts the T1 Pro simply couldn't deliver a comfortable shave and often snagged on my hairs, which was painful and left me with patchy stubble. You have to limit your expectations a bit with single-blade razors, but I've been getting an effective shave with my Philips OneBlade for years, and often I found myself reaching for it to finish up and get the hairs that survived the T1 Pro's efforts.</p><p>This leaves the Laifen T1 Pro in an awkward position. It's beautifully designed and genuinely pleasant to use in every respect until it comes to shaving, but if I have to reach for a second razor to finish the job, the premium build and thoughtful features become little more than a nice distraction. I'd love to see Laifen revisit the shaving head in a future model because the engineering elsewhere is genuinely impressive, but as it stands I can't recommend the T1 Pro.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3343px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="2zomAtmiixWVye8BsUVTdi" name="PXL_20260715_104006701" alt="Front-on view of Laifen T1 shaver" src="https://cdn.mos.cms.futurecdn.net/2zomAtmiixWVye8BsUVTdi-1920-80.jpg" mos="" align="middle" fullscreen="" width="3343" height="1881" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-laifen-t1-pro-price-and-availability"><span>Laifen T1 Pro: price and availability</span></h3><ul><li><strong>List price: $149 / £149 / AU$246</strong></li><li><strong>Launched: September 2025</strong></li></ul><p>The Laifen T1 Pro launched in September 2025.  Listing prices vary but are consistent with other premium shavers. In the US it's currently selling for around $129, in the UK it's £149 and in Australia it's $239. However, it doesn't come with a case, cleaning materials or anything else so it may feel steep in comparison </p><ul><li><strong>Value score: 2/5</strong></li></ul><h3 class="article-body__section" id="section-laifen-t1-pro-design"><span>Laifen T1 Pro: design</span></h3><ul><li><strong>CNC-machined aluminum feels premium</strong></li><li><strong>Magnetic head feels futuristic and makes cleaning a breeze</strong></li><li><strong>USB-C means you're just taking one cable away with you</strong></li></ul><p>The Laifen T1 Pro makes an excellent first impression. Unlike the plastic-bodied shavers that dominate the market, the T1 Pro is built around a CNC-machined unibody aluminium chassis that immediately feels more like a premium gadget than a bathroom appliance. The fit and finish are excellent, while the magnetically-attached shaving head snaps satisfyingly into place and makes cleaning refreshingly simple.</p><p>Laifen has also packed in plenty of thoughtful features. USB-C charging means one less proprietary cable to keep track of, an airplane mode prevents the power button from being accidentally pressed in your luggage, and the IPX7 waterproof rating means you can use the shaver wet or dry before simply rinsing it under the tap to clean it up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3947px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4nXnmhVDYsGPidzwJWBhdi" name="PXL_20260715_104121058" alt="Laifen T1 shaver charging port" src="https://cdn.mos.cms.futurecdn.net/4nXnmhVDYsGPidzwJWBhdi-1920-80.jpg" mos="" align="middle" fullscreen="" width="3947" height="2220" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The compact dimensions work in the T1 Pro's favour. It's comfortable to hold despite the lack of any rubberized grip, and the aluminum body never felt slippery during my testing, even during a heatwave when I was, perhaps a little sweatier than I'd like to admit. Its low weight, just 3.3oz / 93g, makes it easy to use precise movements in the tricky areas like the jawline and around the mouth — areas that can be difficult with larger, clunkier, shavers.</p><p>It's a minor thing, but I found myself squeaking with joy each time I opened the little cap at the bottom of the razor to reveal the USB-C charging port. It's a small thing, but the cap fits so neatly in and comes away so delicately it sparks joy every time I charged it.</p><p>In many ways, the T1 Pro feels like the product of a company obsessed with industrial design. From the premium materials to the magnetic shaving head and clean, minimalist aesthetic, there's very little to criticize about the hardware itself.</p><ul><li><strong>Design score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-laifen-t1-pro-performance"><span>Laifen T1 Pro: performance</span></h3><ul><li><strong>Foil snags on coarse hair, which is painful</strong></li><li><strong>The shave is patchy and inconsistent</strong></li><li><strong>Long-lasting battery means you'll only need to charge occasionally</strong></li></ul><p>Ultimately, the Laifen T1 Pro lives or dies by the quality of its shave, and that's where it struggles. I have fairly coarse facial hair and typically shave twice a week, which proved to be a challenge the T1 Pro never really overcame.</p><p>Rather than cutting cleanly through my stubble, the shaver frequently pulled at beard hairs, making each shave less comfortable than it should have been. It also struggled to achieve an even finish. Even after several passes, I was often left with patches of missed stubble that required further attention. The trimmer head was more prone to this snagging, but the shaver head didn't eliminate the problem and also left my skin irritated. </p><p>The T1 Pro's light weight makes it easier to use, but its small size means covering your face takes longer than with a larger foil shaver. As a result, multiple passes quickly became the norm, and each additional pass increased the likelihood of the shaver snagging on thicker patches of hair.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3745px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="vhENJVydx79tEzDh3Vsxvj" name="PXL_20260715_104048544" alt="Laifen T1 shaver with foil detached" src="https://cdn.mos.cms.futurecdn.net/vhENJVydx79tEzDh3Vsxvj-1920-80.jpg" mos="" align="middle" fullscreen="" width="3745" height="2107" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I repeatedly found myself reaching for another razor to finish the job. Not only did it clean up the areas the T1 Pro had missed, but it also did so more comfortably. That's difficult to overlook given the T1 Pro's premium price. </p><p>The 120-minute battery life is excellent and should last most people several weeks between charges. </p><p>Unfortunately, The Laifen T1 Pro looks and feels like a premium electric shaver, but in my experience it simply doesn't deliver the shave the design promises, which makes it impossible to travel with because I also have to toss a second razor into my bag.</p><ul><li><strong>Performance score: 1/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-laifen-t1-pro"><span>Should you buy the Laifen T1 Pro?</span></h3><div ><table><caption>Laifen T1 Pro score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>A disappointing shave that is often painful.</p></td><td  ><p>2/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Beautifully designed with some thoughtful choices.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>A premium price backed up by the design but not the shave.</p></td><td  ><p>1/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-17">Buy it if</h2><div class="product"><p><strong>You want a premium looking shaver</strong></p><p>The Apple comparisons hold up; it really is a great looking shaver that feels good in your hand</p></div><div class="product"><p><strong>You hate carrying extra cables</strong></p><p>Charging from a USB-C means you've almost definitely got one with you, wherever you are. </p></div><h2 id="don-t-buy-it-if-8">Don't buy it if</h2><div class="product"><p><strong>You want a good clean shave</strong></p><p>I feel like I've gone on about this a lot, but honestly it's really annoying to have a shaver that's doesn't give you a clean shave. </p></div><div class="product"><p><strong>You have delicate skin or coarse hair</strong></p><p>The Laifen T1 Pro can be quite a harsh shave. I found it struggled with my coarse stubble, catching on it painfully and often not cutting cleanly through. The shaver attachment left my skin sore and irritated after each use. </p></div><h3 class="article-body__section" id="section-laifen-t1-pro-also-consider"><span>Laifen T1 Pro: also consider</span></h3><div class="product"><a data-dimension112="97760bcc-81be-11f1-a55e-8f2f2edc1459" data-action="Deal Block" data-label="Read our full Philips OneBlade 360 review" data-dimension48="Read our full Philips OneBlade 360 review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tcESbgLsqkR5L4GBHQC95T" name="1782189580.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tcESbgLsqkR5L4GBHQC95T-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1509" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Philips OneBlade 360</strong></p><p>If you have sensitive skin, you'll likely find this versatile shaver a better option. It doesn't offer the closest shave but it's gentle, suitable for wet and dry shaving, and affordably priced too.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/hair-care/philips-oneblade-360-razor-review" data-dimension112="97760bcc-81be-11f1-a55e-8f2f2edc1459" data-action="Deal Block" data-label="Read our full Philips OneBlade 360 review" data-dimension48="Read our full Philips OneBlade 360 review" data-dimension25=""><strong>Philips OneBlade 360 review</strong></a></p></div><div class="product"><a data-dimension112="97760c26-81be-11f1-96f4-3965af78d9b0" data-action="Deal Block" data-label="Read our full Braun Series 9 Pro review" data-dimension48="Read our full Braun Series 9 Pro review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="G9gxy6qNkAbLtAKprz4W7d" name="Braun Series 9 Pro.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/G9gxy6qNkAbLtAKprz4W7d-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Braun Series 9 Pro</strong></p><p>At the other end of the price scale, we have this premium model, which our reviewer called "the Bugatti Veyron of shavers". It delivers excellent performance, with an ergonomic design and good battery life, and has a price tag to match.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/reviews/braun-series-9-pro-electric-shaver-with-powercase" data-dimension112="97760c26-81be-11f1-96f4-3965af78d9b0" data-action="Deal Block" data-label="Read our full Braun Series 9 Pro review" data-dimension48="Read our full Braun Series 9 Pro review" data-dimension25=""><strong>Braun Series 9 Pro review</strong></a></p></div><p><em>First reviewed July 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/hair-care/laifen-t1-pro-review</link>
                                                                            <description>
                            <![CDATA[ The T1 Pro looks great, but it struggled to deliver a clean shave and often snagged painfully. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">CMmWARujCxyCKynDpNBwGb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cNNZEJ7u4CiMhPCqFi6aAk-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 18 Jul 2026 17:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Hair Care]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                <author><![CDATA[ Jake.tucker@futurenet.com (Jake Tucker) ]]></author>                    <dc:creator><![CDATA[ Jake Tucker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/eszWCmQPeL2Tg3B9Vjbu6R-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Jake Tucker is the Editorial Director for the PC Gaming Show. Before this, he was the editor in chief of TechRadar Gaming and had worked at sites like NME, MCV, Trusted Reviews and many more. He collects vinyl, likes first-person shooters and turn-based tactics titles, but hates writing bios. Jake currently lives in London and is bouncing around the city trying to eat at all of the nice restaurants.&lt;/p&gt;&lt;p&gt;Jake started out by founding the video game talk event VideoBrains, before working for PocketGamer as the game&#039;s VR editor, writing about mobile VR. Then he worked for Bit-Tech as the site&#039;s games editor before briefly editing Esports Pro, a B2B website about the business of esports. This got folded into consumer trade publication MCV, where Jake worked as a content editor. After this, Jake was the game&#039;s editor for tech publication Trusted Reviews and then moved into the special projects division at Red Bull, where he worked on games video and events for the company.&lt;/p&gt;&lt;p&gt;Still, when you have journalism in the blood, it can be hard to get out of it, so Jake then moved to NME to start an award-nominated video game section for the site. After this, Jake came to TechRadar Gaming before moving over to the PC Gaming Show.&lt;/p&gt;&lt;p&gt;Jake&#039;s favourite game is &lt;em&gt;Jagged Alliance 2&lt;/em&gt; with the 1.13 mod installed. His favourite film is Heat. He&#039;s considering buying an iron for the first time. He is in his mid 30s.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cNNZEJ7u4CiMhPCqFi6aAk-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Laifen T1 shaver with foil]]></media:description>                                                            <media:text><![CDATA[Laifen T1 shaver with foil]]></media:text>
                                <media:title type="plain"><![CDATA[Laifen T1 shaver with foil]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cNNZEJ7u4CiMhPCqFi6aAk-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-laifen-t1-pro-two-minute-review"><span>Laifen T1 Pro: two-minute review</span></h3><p>On first impressions, the Laifen T1 Pro wows. Open the box and you're greeted with Apple-inspired packaging, while the shaver itself immediately looks the part. Its CNC-machined unibody aluminium body looks and feels genuinely premium and, if you're used to cheaper shavers like the Philips OneBlade – my usual razor – it's impossible not to grin at the magnetically attached shaving head, which somehow manages to feel genuinely futuristic.</p><p>Modern conveniences like USB-C charging, an aeroplane mode to stop the power button being pressed in your bag while travelling and IPX7 waterproofing all add to the premium feel. Based on the spec sheet and those first impressions, you'd be forgiven for thinking the Laifen T1 Pro was one of the <a href="https://www.techradar.com/best/best-electric-razors-and-beard-trimmers">best electric shavers</a> on the market.</p><p>The problem is that, with a shaver, the only thing that really matters is the shave itself, and that's where the Laifen T1 Po disappoints. I shave twice a week and have fairly coarse stubble, and despite repeated attempts the T1 Pro simply couldn't deliver a comfortable shave and often snagged on my hairs, which was painful and left me with patchy stubble. You have to limit your expectations a bit with single-blade razors, but I've been getting an effective shave with my Philips OneBlade for years, and often I found myself reaching for it to finish up and get the hairs that survived the T1 Pro's efforts.</p><p>This leaves the Laifen T1 Pro in an awkward position. It's beautifully designed and genuinely pleasant to use in every respect until it comes to shaving, but if I have to reach for a second razor to finish the job, the premium build and thoughtful features become little more than a nice distraction. I'd love to see Laifen revisit the shaving head in a future model because the engineering elsewhere is genuinely impressive, but as it stands I can't recommend the T1 Pro.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3343px;"><p class="vanilla-image-block" style="padding-top:56.27%;"><img id="2zomAtmiixWVye8BsUVTdi" name="PXL_20260715_104006701" alt="Front-on view of Laifen T1 shaver" src="https://cdn.mos.cms.futurecdn.net/2zomAtmiixWVye8BsUVTdi-1920-80.jpg" mos="" align="middle" fullscreen="" width="3343" height="1881" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-laifen-t1-pro-price-and-availability"><span>Laifen T1 Pro: price and availability</span></h3><ul><li><strong>List price: $149 / £149 / AU$246</strong></li><li><strong>Launched: September 2025</strong></li></ul><p>The Laifen T1 Pro launched in September 2025.  Listing prices vary but are consistent with other premium shavers. In the US it's currently selling for around $129, in the UK it's £149 and in Australia it's $239. However, it doesn't come with a case, cleaning materials or anything else so it may feel steep in comparison </p><ul><li><strong>Value score: 2/5</strong></li></ul><h3 class="article-body__section" id="section-laifen-t1-pro-design"><span>Laifen T1 Pro: design</span></h3><ul><li><strong>CNC-machined aluminum feels premium</strong></li><li><strong>Magnetic head feels futuristic and makes cleaning a breeze</strong></li><li><strong>USB-C means you're just taking one cable away with you</strong></li></ul><p>The Laifen T1 Pro makes an excellent first impression. Unlike the plastic-bodied shavers that dominate the market, the T1 Pro is built around a CNC-machined unibody aluminium chassis that immediately feels more like a premium gadget than a bathroom appliance. The fit and finish are excellent, while the magnetically-attached shaving head snaps satisfyingly into place and makes cleaning refreshingly simple.</p><p>Laifen has also packed in plenty of thoughtful features. USB-C charging means one less proprietary cable to keep track of, an airplane mode prevents the power button from being accidentally pressed in your luggage, and the IPX7 waterproof rating means you can use the shaver wet or dry before simply rinsing it under the tap to clean it up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3947px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4nXnmhVDYsGPidzwJWBhdi" name="PXL_20260715_104121058" alt="Laifen T1 shaver charging port" src="https://cdn.mos.cms.futurecdn.net/4nXnmhVDYsGPidzwJWBhdi-1920-80.jpg" mos="" align="middle" fullscreen="" width="3947" height="2220" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The compact dimensions work in the T1 Pro's favour. It's comfortable to hold despite the lack of any rubberized grip, and the aluminum body never felt slippery during my testing, even during a heatwave when I was, perhaps a little sweatier than I'd like to admit. Its low weight, just 3.3oz / 93g, makes it easy to use precise movements in the tricky areas like the jawline and around the mouth — areas that can be difficult with larger, clunkier, shavers.</p><p>It's a minor thing, but I found myself squeaking with joy each time I opened the little cap at the bottom of the razor to reveal the USB-C charging port. It's a small thing, but the cap fits so neatly in and comes away so delicately it sparks joy every time I charged it.</p><p>In many ways, the T1 Pro feels like the product of a company obsessed with industrial design. From the premium materials to the magnetic shaving head and clean, minimalist aesthetic, there's very little to criticize about the hardware itself.</p><ul><li><strong>Design score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-laifen-t1-pro-performance"><span>Laifen T1 Pro: performance</span></h3><ul><li><strong>Foil snags on coarse hair, which is painful</strong></li><li><strong>The shave is patchy and inconsistent</strong></li><li><strong>Long-lasting battery means you'll only need to charge occasionally</strong></li></ul><p>Ultimately, the Laifen T1 Pro lives or dies by the quality of its shave, and that's where it struggles. I have fairly coarse facial hair and typically shave twice a week, which proved to be a challenge the T1 Pro never really overcame.</p><p>Rather than cutting cleanly through my stubble, the shaver frequently pulled at beard hairs, making each shave less comfortable than it should have been. It also struggled to achieve an even finish. Even after several passes, I was often left with patches of missed stubble that required further attention. The trimmer head was more prone to this snagging, but the shaver head didn't eliminate the problem and also left my skin irritated. </p><p>The T1 Pro's light weight makes it easier to use, but its small size means covering your face takes longer than with a larger foil shaver. As a result, multiple passes quickly became the norm, and each additional pass increased the likelihood of the shaver snagging on thicker patches of hair.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3745px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="vhENJVydx79tEzDh3Vsxvj" name="PXL_20260715_104048544" alt="Laifen T1 shaver with foil detached" src="https://cdn.mos.cms.futurecdn.net/vhENJVydx79tEzDh3Vsxvj-1920-80.jpg" mos="" align="middle" fullscreen="" width="3745" height="2107" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>I repeatedly found myself reaching for another razor to finish the job. Not only did it clean up the areas the T1 Pro had missed, but it also did so more comfortably. That's difficult to overlook given the T1 Pro's premium price. </p><p>The 120-minute battery life is excellent and should last most people several weeks between charges. </p><p>Unfortunately, The Laifen T1 Pro looks and feels like a premium electric shaver, but in my experience it simply doesn't deliver the shave the design promises, which makes it impossible to travel with because I also have to toss a second razor into my bag.</p><ul><li><strong>Performance score: 1/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-laifen-t1-pro"><span>Should you buy the Laifen T1 Pro?</span></h3><div ><table><caption>Laifen T1 Pro score card</caption><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>A disappointing shave that is often painful.</p></td><td  ><p>2/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Beautifully designed with some thoughtful choices.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>A premium price backed up by the design but not the shave.</p></td><td  ><p>1/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-17">Buy it if</h2><div class="product"><p><strong>You want a premium looking shaver</strong></p><p>The Apple comparisons hold up; it really is a great looking shaver that feels good in your hand</p></div><div class="product"><p><strong>You hate carrying extra cables</strong></p><p>Charging from a USB-C means you've almost definitely got one with you, wherever you are. </p></div><h2 id="don-t-buy-it-if-8">Don't buy it if</h2><div class="product"><p><strong>You want a good clean shave</strong></p><p>I feel like I've gone on about this a lot, but honestly it's really annoying to have a shaver that's doesn't give you a clean shave. </p></div><div class="product"><p><strong>You have delicate skin or coarse hair</strong></p><p>The Laifen T1 Pro can be quite a harsh shave. I found it struggled with my coarse stubble, catching on it painfully and often not cutting cleanly through. The shaver attachment left my skin sore and irritated after each use. </p></div><h3 class="article-body__section" id="section-laifen-t1-pro-also-consider"><span>Laifen T1 Pro: also consider</span></h3><div class="product"><a data-dimension112="97760bcc-81be-11f1-a55e-8f2f2edc1459" data-action="Deal Block" data-label="Read our full Philips OneBlade 360 review" data-dimension48="Read our full Philips OneBlade 360 review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tcESbgLsqkR5L4GBHQC95T" name="1782189580.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tcESbgLsqkR5L4GBHQC95T-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1509" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Philips OneBlade 360</strong></p><p>If you have sensitive skin, you'll likely find this versatile shaver a better option. It doesn't offer the closest shave but it's gentle, suitable for wet and dry shaving, and affordably priced too.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/hair-care/philips-oneblade-360-razor-review" data-dimension112="97760bcc-81be-11f1-a55e-8f2f2edc1459" data-action="Deal Block" data-label="Read our full Philips OneBlade 360 review" data-dimension48="Read our full Philips OneBlade 360 review" data-dimension25=""><strong>Philips OneBlade 360 review</strong></a></p></div><div class="product"><a data-dimension112="97760c26-81be-11f1-96f4-3965af78d9b0" data-action="Deal Block" data-label="Read our full Braun Series 9 Pro review" data-dimension48="Read our full Braun Series 9 Pro review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1509px;"><p class="vanilla-image-block" style="padding-top:99.34%;"><img id="G9gxy6qNkAbLtAKprz4W7d" name="Braun Series 9 Pro.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/G9gxy6qNkAbLtAKprz4W7d-1920-80.jpg" mos="" align="middle" fullscreen="" width="1509" height="1499" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Braun Series 9 Pro</strong></p><p>At the other end of the price scale, we have this premium model, which our reviewer called "the Bugatti Veyron of shavers". It delivers excellent performance, with an ergonomic design and good battery life, and has a price tag to match.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/reviews/braun-series-9-pro-electric-shaver-with-powercase" data-dimension112="97760c26-81be-11f1-96f4-3965af78d9b0" data-action="Deal Block" data-label="Read our full Braun Series 9 Pro review" data-dimension48="Read our full Braun Series 9 Pro review" data-dimension25=""><strong>Braun Series 9 Pro review</strong></a></p></div><p><em>First reviewed July 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Dimplex Rechargeable Cordless Desk Fan is a good go-anywhere fan, but you might want to play some music to drown out its drone ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-two-minute-review"><span>Dimplex Rechargeable Cordless Desk Fan: two minute review</span></h3><div  class="fancy-box"><div class="fancy_box-title">Specifications</div><div class="fancy_box_body"><p class="fancy-box__body-text">Type: desktop</p><p class="fancy-box__body-text">Speeds: 4</p><p class="fancy-box__body-text">Oscillation: none</p><p class="fancy-box__body-text">Dimensions (HxWxD): 6.7 x 11 x 7.4 inches / 17 x 27.9 x 18.7cm</p><p class="fancy-box__body-text">Controls: power and speed buttons</p><p class="fancy-box__body-text">Battery life: 4-15 hours</p><p class="fancy-box__body-text">Noise level: 36dB to 43dB</p></div></div><p>Dimplex makes lots of floor, table and pedestal fans, and the Rechargeable Cordless Desk Fan is designed to address one of their weaknesses: they can only go where your plug sockets or extension cables can go. This affordable fan works as wired one via its USB-C port but also includes a rechargeable battery delivering up to 15 hours of air, or around four hours at full speed. That means you you can take it into the garden on a hot evening or take it to your bedroom and run it overnight. </p><p>The Dimplex Rechargeable Cordless Desk Fan doesn't oscillate but you can tilt it vertically up to 90 degrees, and it folds down almost flat so it's easy to keep in a drawer or toss into a bag. There are four speed settings here but the high speed one is not recommended while charging, as it depletes the battery faster than the USB-C connection charges it.</p><p>The fan works well and is fairly quiet, but it does make a noticeable drone at all speed settings; on a hot day, running the fan at high was very distracting. Of course all fans make some noise, but as this is a small fan with a 6.7 inch / 17cm diameter and 5.1 inch 13cm blades, you need to have it close to you to feel the benefit. In my home office the Dimplex on quiet setting at half a meter distance was noticeably louder than a much larger air circulator running at 50% speed one meter from me. If noise annoys, this may not be the fan for you.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GTH53ew3JeM5kuR3rNjgBG" name="Dimplex Rechargeable Cordless Desk Fan" alt="The Dimplex Rechargeable Cordless Desk Fan on a wooden bench table" src="https://cdn.mos.cms.futurecdn.net/GTH53ew3JeM5kuR3rNjgBG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-price-and-availability"><span>Dimplex Rechargeable Cordless Desk Fan review: price and availability</span></h3><ul><li><strong>Launched July 2025</strong></li><li><strong>UK only</strong></li><li><strong>£34.99 (about $50 / AU$70)</strong></li></ul><p>The Dimplex Rechargeable Cordless Desk Fan, model DXRCFN, launched in the UK in July 2025. It has a recommended retail price of £34.99 (about $50 / AU$70), making it the most affordable model in the current range of Dimplex cooling fans and about £10 more expensive than a similarly sized wired desktop fan. It isn't currently available in Australia, and Dimplex doesn't sell its home cooling products in the US. </p><p>This fan has been cheaper – it was <a href="https://www.techradar.com/seasonal-sales/i-slept-under-a-blanket-of-cool-air-last-night-thanks-to-this-clever-adjustable-tower-fan-and-theres-a-huge-gbp76-off-for-prime-day">£25.45 during Prime Day 2026</a> – but I wouldn't expect to see any price cuts during the summer months in the UK.</p><p><strong>Value for money: 4/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wfc9iJKH7KVgqQ3U9e8WDG" name="Dimplex Rechargeable Cordless Desk Fan" alt="Close up of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table showing the control buttons" src="https://cdn.mos.cms.futurecdn.net/wfc9iJKH7KVgqQ3U9e8WDG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-design"><span>Dimplex Rechargeable Cordless Desk Fan review: design</span></h3><ul><li><strong>Supremely portable</strong></li><li><strong>Finger-friendly grille</strong></li><li><strong>USB-C charging</strong></li></ul><p>The design of the fan is rather clever. It's been made for maximum portability, folding in on itself to resemble a small squashed football for travel or storage. It charges via USB-C and takes about four hours to charge fully. Because it's USB you can charge it with a phone charger or power bank, which makes it a good option for travelling. The battery is sealed inside and is not user-replaceable.</p><p>In addition to its internal bladed fan there's a circular louvred grille on the front that rotates and enhances the airflow. Although it spins quickly, the front grille is finger-friendly and won't hurt you or a child if you or they touch it (although you can lock it in place if you don't want it to spin).</p><p>The Dimplex fan doesn't oscillate, but you can adjust its vertical tilt by up to 90 degrees by moving the fan section up or down. It stays put without having to be screwed in place. Controls are simple, with just two buttons: power and speed. There's no remote control and no smartphone/smart home features.</p><p><strong>Design: 4/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pAhvYcJUseiucq7NrRtnCG" name="Dimplex Rechargeable Cordless Desk Fan" alt="Side view of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table" src="https://cdn.mos.cms.futurecdn.net/pAhvYcJUseiucq7NrRtnCG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-performance"><span>Dimplex Rechargeable Cordless Desk Fan review: performance</span></h3><ul><li><strong>Decent airflow for its size</strong></li><li><strong>Four speed settings</strong></li><li><strong>Distracting sound</strong></li></ul><p>There are four fan speeds — quiet, low, medium and high — and I found that for my home office desk the quiet setting delivered a nice breeze without making me feel like I was in a wind tunnel. High speed was a bit intense up close but worked well from a little further away. Dimplex recommends only using High when you're on battery power as it can still deplete the battery when you're recharging it; at its lowest, quiet setting I managed 14+ hours from a single charge. </p><p>The Dimplex moves a decent amount of air for its size and it's fairly quiet in terms of its overall volume, which ranges from 36dB to 43dB. However, it does make a noticeable and constant droning sound that rises in pitch as you increase the speed. All bladed fans make some motor noise, of course, but desk fans are designed to sit very close to you, which means any noise is much more noticeable. For me it was too distracting at any speed when I sat it on my work desk, although in the bedroom at its lowest setting it didn't keep me awake.</p><p><strong>Performance: 3/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iz6Lds5kHHgGaGCvJwSZEG" name="Dimplex Rechargeable Cordless Desk Fan" alt="The Dimplex Rechargeable Cordless Desk Fan on a wooden bench table with the fan folded down for travel" src="https://cdn.mos.cms.futurecdn.net/iz6Lds5kHHgGaGCvJwSZEG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-should-you-buy-it"><span>Dimplex Rechargeable Cordless Desk Fan review: should you buy it?</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Value</strong></p></td><td  ><p>Not much more expensive than a wired fan of similar size</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Designed for maximum portability with fold-flat design, but no oscillation feature</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p><strong>Performance</strong></p></td><td  ><p>Good airflow for such a small fan but we found the noise a little distracting.</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-18">Buy it if...</h2><div class="product"><p><strong>You like to move it, move it</strong></p><p>The Dimplex Rechargeable Cordless Desk Fan is super light and extremely portable, folding down small enough to put in a bag.</p></div><div class="product"><p><strong>You get around</strong></p><p>This fan charges via USB-C, runs for up to 15 hours and can be recharged from a power bank or phone charger.</p></div><div class="product"><p><strong>You're in a small space</strong></p><p>The relatively small fan blades mean this is best suited to desktop use or close-up positioning.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="1ee17f08-7eac-11f1-94f4-357c183e04e7" data-action="Deal Block" data-label="You're in a small spaceThe relatively small fan blades mean this is best suited to desktop use or close-up positioning." data-dimension48="You're in a small spaceThe relatively small fan blades mean this is best suited to desktop use or close-up positioning." data-dimension25="">View Deal</a></p></div><h2 id="don-t-buy-it-if-9">Don't buy it if...</h2><div class="product"><p><strong>Noise annoys</strong></p><p>The fan's motor makes a noticeable drone that your reviewer found distracting.</p></div><div class="product"><p><strong>You're far away</strong></p><p>This fan only moves air a short distance, so you'll need something more powerful for larger spaces.</p></div><div class="product"><p><strong>Your home's too hot</strong></p><p>Fans like this one move air around but don't have any cooling features.</p></div><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-also-consider"><span>Dimplex Rechargeable Cordless Desk Fan review: also consider</span></h3><div class="product"><a data-dimension112="1ee180d4-7eac-11f1-aeaf-2b3e5dca0b88" data-action="Deal Block" data-label="10-inch Sefte fans" data-dimension48="10-inch Sefte fans" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:536px;"><p class="vanilla-image-block" style="padding-top:99.81%;"><img id="tY25YSqrEJed95Cm7rVBNd" name="sefte" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tY25YSqrEJed95Cm7rVBNd-1920-80.jpg" mos="" align="middle" fullscreen="" width="536" height="535" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>It's twice the price, but the MeacoFan Sefte 6-inch portable air circulator is brilliant, delivering up to 22 hours of impressive airflow and whisper-quiet operation. That's £69.99, and the slightly larger and more powerful 8-inch is £79.99. Both are in high demand so if you want one you should move quickly: the same firm's <a href="https://www.techradar.com/home/small-appliances/meaco-sefte-pro-10in-air-circulator-review" data-dimension112="1ee180d4-7eac-11f1-aeaf-2b3e5dca0b88" data-action="Deal Block" data-label="10-inch Sefte fans" data-dimension48="10-inch Sefte fans" data-dimension25=""><u>10-inch Sefte fans</u></a> sold out very quickly and are currently out of stock.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="1ee180d4-7eac-11f1-aeaf-2b3e5dca0b88" data-action="Deal Block" data-label="10-inch Sefte fans" data-dimension48="10-inch Sefte fans" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-how-we-tested"><span>Dimplex Rechargeable Cordless Desk Fan review: how we tested</span></h3><p>I tested this Dimplex fan for a week during summery weather as both a desktop fan in my home office, and as a bedroom fan overnight. Both locations are in my house, where indoor temperatures were around 69.8°F to 75.2°F / 21ºC to 24ºC during the daytime and around 66.2°F to 68.0°F / 19ºC to 20ºC at night.</p><p><em>First tested July 2026</em></p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/air-quality/the-dimplex-rechargeable-cordless-desk-fan-is-a-good-go-anywhere-fan-but-you-might-want-to-play-some-music-to-drown-out-its-drone</link>
                                                                            <description>
                            <![CDATA[ This Dimplex fan is very portable and runs for up to 15 hours on battery, but it's a little noisy if you're sitting close to it ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iKRAGE57PJSe3r5eP3RoKQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Ng9RagKZww2BY5HkNHPbAG-1920-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 13 Jul 2026 11:15:13 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Air Quality]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                                                                                    <dc:creator><![CDATA[ Carrie Marshall ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xJGRRy6MkKwN3qJ5X6enZG-320-70.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/Ng9RagKZww2BY5HkNHPbAG-1920-80.png">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Photo of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table]]></media:description>                                                            <media:text><![CDATA[Photo of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table]]></media:text>
                                <media:title type="plain"><![CDATA[Photo of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Ng9RagKZww2BY5HkNHPbAG-1920-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-two-minute-review"><span>Dimplex Rechargeable Cordless Desk Fan: two minute review</span></h3><div  class="fancy-box"><div class="fancy_box-title">Specifications</div><div class="fancy_box_body"><p class="fancy-box__body-text">Type: desktop</p><p class="fancy-box__body-text">Speeds: 4</p><p class="fancy-box__body-text">Oscillation: none</p><p class="fancy-box__body-text">Dimensions (HxWxD): 6.7 x 11 x 7.4 inches / 17 x 27.9 x 18.7cm</p><p class="fancy-box__body-text">Controls: power and speed buttons</p><p class="fancy-box__body-text">Battery life: 4-15 hours</p><p class="fancy-box__body-text">Noise level: 36dB to 43dB</p></div></div><p>Dimplex makes lots of floor, table and pedestal fans, and the Rechargeable Cordless Desk Fan is designed to address one of their weaknesses: they can only go where your plug sockets or extension cables can go. This affordable fan works as wired one via its USB-C port but also includes a rechargeable battery delivering up to 15 hours of air, or around four hours at full speed. That means you you can take it into the garden on a hot evening or take it to your bedroom and run it overnight. </p><p>The Dimplex Rechargeable Cordless Desk Fan doesn't oscillate but you can tilt it vertically up to 90 degrees, and it folds down almost flat so it's easy to keep in a drawer or toss into a bag. There are four speed settings here but the high speed one is not recommended while charging, as it depletes the battery faster than the USB-C connection charges it.</p><p>The fan works well and is fairly quiet, but it does make a noticeable drone at all speed settings; on a hot day, running the fan at high was very distracting. Of course all fans make some noise, but as this is a small fan with a 6.7 inch / 17cm diameter and 5.1 inch 13cm blades, you need to have it close to you to feel the benefit. In my home office the Dimplex on quiet setting at half a meter distance was noticeably louder than a much larger air circulator running at 50% speed one meter from me. If noise annoys, this may not be the fan for you.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GTH53ew3JeM5kuR3rNjgBG" name="Dimplex Rechargeable Cordless Desk Fan" alt="The Dimplex Rechargeable Cordless Desk Fan on a wooden bench table" src="https://cdn.mos.cms.futurecdn.net/GTH53ew3JeM5kuR3rNjgBG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-price-and-availability"><span>Dimplex Rechargeable Cordless Desk Fan review: price and availability</span></h3><ul><li><strong>Launched July 2025</strong></li><li><strong>UK only</strong></li><li><strong>£34.99 (about $50 / AU$70)</strong></li></ul><p>The Dimplex Rechargeable Cordless Desk Fan, model DXRCFN, launched in the UK in July 2025. It has a recommended retail price of £34.99 (about $50 / AU$70), making it the most affordable model in the current range of Dimplex cooling fans and about £10 more expensive than a similarly sized wired desktop fan. It isn't currently available in Australia, and Dimplex doesn't sell its home cooling products in the US. </p><p>This fan has been cheaper – it was <a href="https://www.techradar.com/seasonal-sales/i-slept-under-a-blanket-of-cool-air-last-night-thanks-to-this-clever-adjustable-tower-fan-and-theres-a-huge-gbp76-off-for-prime-day">£25.45 during Prime Day 2026</a> – but I wouldn't expect to see any price cuts during the summer months in the UK.</p><p><strong>Value for money: 4/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wfc9iJKH7KVgqQ3U9e8WDG" name="Dimplex Rechargeable Cordless Desk Fan" alt="Close up of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table showing the control buttons" src="https://cdn.mos.cms.futurecdn.net/wfc9iJKH7KVgqQ3U9e8WDG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-design"><span>Dimplex Rechargeable Cordless Desk Fan review: design</span></h3><ul><li><strong>Supremely portable</strong></li><li><strong>Finger-friendly grille</strong></li><li><strong>USB-C charging</strong></li></ul><p>The design of the fan is rather clever. It's been made for maximum portability, folding in on itself to resemble a small squashed football for travel or storage. It charges via USB-C and takes about four hours to charge fully. Because it's USB you can charge it with a phone charger or power bank, which makes it a good option for travelling. The battery is sealed inside and is not user-replaceable.</p><p>In addition to its internal bladed fan there's a circular louvred grille on the front that rotates and enhances the airflow. Although it spins quickly, the front grille is finger-friendly and won't hurt you or a child if you or they touch it (although you can lock it in place if you don't want it to spin).</p><p>The Dimplex fan doesn't oscillate, but you can adjust its vertical tilt by up to 90 degrees by moving the fan section up or down. It stays put without having to be screwed in place. Controls are simple, with just two buttons: power and speed. There's no remote control and no smartphone/smart home features.</p><p><strong>Design: 4/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="pAhvYcJUseiucq7NrRtnCG" name="Dimplex Rechargeable Cordless Desk Fan" alt="Side view of the Dimplex Rechargeable Cordless Desk Fan on a wooden bench table" src="https://cdn.mos.cms.futurecdn.net/pAhvYcJUseiucq7NrRtnCG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-performance"><span>Dimplex Rechargeable Cordless Desk Fan review: performance</span></h3><ul><li><strong>Decent airflow for its size</strong></li><li><strong>Four speed settings</strong></li><li><strong>Distracting sound</strong></li></ul><p>There are four fan speeds — quiet, low, medium and high — and I found that for my home office desk the quiet setting delivered a nice breeze without making me feel like I was in a wind tunnel. High speed was a bit intense up close but worked well from a little further away. Dimplex recommends only using High when you're on battery power as it can still deplete the battery when you're recharging it; at its lowest, quiet setting I managed 14+ hours from a single charge. </p><p>The Dimplex moves a decent amount of air for its size and it's fairly quiet in terms of its overall volume, which ranges from 36dB to 43dB. However, it does make a noticeable and constant droning sound that rises in pitch as you increase the speed. All bladed fans make some motor noise, of course, but desk fans are designed to sit very close to you, which means any noise is much more noticeable. For me it was too distracting at any speed when I sat it on my work desk, although in the bedroom at its lowest setting it didn't keep me awake.</p><p><strong>Performance: 3/5</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2048px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iz6Lds5kHHgGaGCvJwSZEG" name="Dimplex Rechargeable Cordless Desk Fan" alt="The Dimplex Rechargeable Cordless Desk Fan on a wooden bench table with the fan folded down for travel" src="https://cdn.mos.cms.futurecdn.net/iz6Lds5kHHgGaGCvJwSZEG-1920-80.png" mos="" align="middle" fullscreen="" width="2048" height="1152" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-should-you-buy-it"><span>Dimplex Rechargeable Cordless Desk Fan review: should you buy it?</span></h3><div ><table><tbody><tr><td class="firstcol " ><p><strong>Value</strong></p></td><td  ><p>Not much more expensive than a wired fan of similar size</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>Designed for maximum portability with fold-flat design, but no oscillation feature</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p><strong>Performance</strong></p></td><td  ><p>Good airflow for such a small fan but we found the noise a little distracting.</p></td><td  ><p>3/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-18">Buy it if...</h2><div class="product"><p><strong>You like to move it, move it</strong></p><p>The Dimplex Rechargeable Cordless Desk Fan is super light and extremely portable, folding down small enough to put in a bag.</p></div><div class="product"><p><strong>You get around</strong></p><p>This fan charges via USB-C, runs for up to 15 hours and can be recharged from a power bank or phone charger.</p></div><div class="product"><p><strong>You're in a small space</strong></p><p>The relatively small fan blades mean this is best suited to desktop use or close-up positioning.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="1ee17f08-7eac-11f1-94f4-357c183e04e7" data-action="Deal Block" data-label="You're in a small spaceThe relatively small fan blades mean this is best suited to desktop use or close-up positioning." data-dimension48="You're in a small spaceThe relatively small fan blades mean this is best suited to desktop use or close-up positioning." data-dimension25="">View Deal</a></p></div><h2 id="don-t-buy-it-if-9">Don't buy it if...</h2><div class="product"><p><strong>Noise annoys</strong></p><p>The fan's motor makes a noticeable drone that your reviewer found distracting.</p></div><div class="product"><p><strong>You're far away</strong></p><p>This fan only moves air a short distance, so you'll need something more powerful for larger spaces.</p></div><div class="product"><p><strong>Your home's too hot</strong></p><p>Fans like this one move air around but don't have any cooling features.</p></div><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-also-consider"><span>Dimplex Rechargeable Cordless Desk Fan review: also consider</span></h3><div class="product"><a data-dimension112="1ee180d4-7eac-11f1-aeaf-2b3e5dca0b88" data-action="Deal Block" data-label="10-inch Sefte fans" data-dimension48="10-inch Sefte fans" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:536px;"><p class="vanilla-image-block" style="padding-top:99.81%;"><img id="tY25YSqrEJed95Cm7rVBNd" name="sefte" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tY25YSqrEJed95Cm7rVBNd-1920-80.jpg" mos="" align="middle" fullscreen="" width="536" height="535" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p>It's twice the price, but the MeacoFan Sefte 6-inch portable air circulator is brilliant, delivering up to 22 hours of impressive airflow and whisper-quiet operation. That's £69.99, and the slightly larger and more powerful 8-inch is £79.99. Both are in high demand so if you want one you should move quickly: the same firm's <a href="https://www.techradar.com/home/small-appliances/meaco-sefte-pro-10in-air-circulator-review" data-dimension112="1ee180d4-7eac-11f1-aeaf-2b3e5dca0b88" data-action="Deal Block" data-label="10-inch Sefte fans" data-dimension48="10-inch Sefte fans" data-dimension25=""><u>10-inch Sefte fans</u></a> sold out very quickly and are currently out of stock.<a class="view-deal button" href="" target="_blank" rel="nofollow" data-dimension112="1ee180d4-7eac-11f1-aeaf-2b3e5dca0b88" data-action="Deal Block" data-label="10-inch Sefte fans" data-dimension48="10-inch Sefte fans" data-dimension25="">View Deal</a></p></div><h3 class="article-body__section" id="section-dimplex-rechargeable-cordless-desk-fan-review-how-we-tested"><span>Dimplex Rechargeable Cordless Desk Fan review: how we tested</span></h3><p>I tested this Dimplex fan for a week during summery weather as both a desktop fan in my home office, and as a bedroom fan overnight. Both locations are in my house, where indoor temperatures were around 69.8°F to 75.2°F / 21ºC to 24ºC during the daytime and around 66.2°F to 68.0°F / 19ºC to 20ºC at night.</p><p><em>First tested July 2026</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the Blink Outdoor 2K+ — an affordable security camera with great battery life, but a catch ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-blink-outdoor-2k-two-minute-review"><span>Blink Outdoor 2K+: two-minute review</span></h3><p>Blink has become the brand you recommend to people who don't really want a security camera. Cheap, painless, owned by Amazon, and a forgiving field of view. The catch was that previous 1080p pictures turned to mush the moment anything moved, or the sun went down.</p><p>The Outdoor 2K+ fixes this by capturing would-be crims at 2560 x 1440 in its top "Best" setting. There's 4x zoom for closer inspections, noise-cancelling two-way audio making doorstep conversations less of a shouting match, and an improved low-light sensor that holds color as the light fades before switching to infrared black-and-white. Drop to 1080p 'Standard' or 720p 'Saver', and you'll claw back a bit of battery life.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2KEav4Eg3CJ67XssMrvL9a-1920-80.jpg" alt="Blink Outdoor 2K+ security camera with hub on table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SzHiL34p4cmfw8xjUnRv4a-1920-80.jpg" alt="Blink Outdoor 2K+ security camera with hub on table" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Blink quotes up to two years from a pair of AA lithium cells, and while I can't fast-forward through two summers to prove it, a fortnight’s daily use barely dented the gauge. There's a USB-C port if you'd rather wire it to the mains with Blink's separately sold weather-resistant adapter, an IP65 rating shrugs off wet weather, and it’s compatible with the existing Outdoor 4 accessory range, so floodlight mounts and battery packs carry over.</p><p>Setup should be the usual Blink doddle. Scan the code, follow the app, pair the Sync Module, done in under 10 minutes with no cabling and no electrician. For a first-time buyer, it's about as low-friction as home security gets, although we did encounter some teething problems connecting the kit to a home Wi-Fi network.</p><p>Then you discover the real kicker. The Outdoor 2K+ ships with a new Sync Module Core rather than the old Sync Module 2 we were supplied with, and the Core has had its USB port removed. That port was the whole point for subscription-averse buyers: plug in a flash drive, store clips locally, pay Amazon nothing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3NmKFED9xFicTPq6jGCeTb-1920-80.jpg" alt="Blink Outdoor 2K+ security camera mounted on wall" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zC6hpx2qsSYo4PHp5sD3wa-1920-80.jpg" alt="Blink Outdoor 2K+ security camera mounted on wall" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Without it, the free experience reduces to live view and motion alerts, while saved recordings, person and vehicle detection and the smarter notifications all sit behind a Blink subscription that starts at £2.50 (about $3.50 / AU$5) a month and rises to £8 (about $10 / AU$20) for unlimited cameras. An older Sync Module 2 still works if you own one, but most people buying this won't.</p><p>It leaves the 2K+ in an odd spot. As a camera, it's the best budget outdoor option Blink has made. As a package, it's less optimal. Judge it on the camera and battery life alone, and it's a comfortable recommendation. Judge it on the small print, and you’ve got a new monthly bill the old model didn’t demand.</p><h3 class="article-body__section" id="section-blink-outdoor-2k-price-and-availability"><span>Blink Outdoor 2K+: price and availability</span></h3><ul><li><strong>List price: £89.99 / $99.99 / AU$119</strong></li><li><strong>Launched October 2025</strong></li><li><strong>Available in the US, UK and Australia</strong></li></ul><p>Pitched at the affordable end as ever, the Outdoor 2K+ slots in alongside the cheaper Mini 2K+ and the Blink Arc — a mount that pairs two Mini 2K+ cameras for a panoramic view — as part of the brand's 2K refresh. The one-camera kit includes the Sync Module Core, two AA lithium batteries, and a mount, so nothing essential to buy on day one — unless you want your footage saved anywhere, at which point the maths changes.</p><p>That's the rub. The headline price buys you a very capable camera and a deliberately hamstrung storage situation. Anyone who bought the Outdoor 4 specifically to dodge a subscription should know the goalposts have moved, because the bundled module no longer takes a USB stick. Frequent discounting means the camera itself rarely costs full RRP for long, which softens the blow, but the ongoing cost is the number to watch.</p><ul><li><strong>Value score: 3.5/5</strong></li></ul><h3 class="article-body__section" id="section-blink-outdoor-2k-subscription-costs"><span>Blink Outdoor 2K+: subscription costs</span></h3><p>Blink has two subscription tiers to choose from, both offering unlimited cloud storage for recordings for up to 60 days (up to 30 days in the EU and UK). Monthly or yearly billing is available.</p><ul><li><strong>Blink Basic: </strong>$3.99p/m | £2.50p/m | AU$4.95p/m</li><li><strong>Blink Plus: </strong>$11.99p/m | £8p/m | AU$15p/m</li></ul><p>Blink Basic includes support for one device, motion-event recording, live-view recording, instant video access, video sharing, person detection, and photo capture. Blink Plus includes all Basic features, along with unlimited device inclusion, moments capture, notification snoozing and 10% off Blink devices.</p><h3 class="article-body__section" id="section-blink-outdoor-2k-specifications"><span>Blink Outdoor 2K+: specifications</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Specification</p></th><th  ><p>Details</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Resolution</p></td><td  ><p>2K QHD (2560 x 1440)</p></td></tr><tr><td class="firstcol " ><p>Field of view</p></td><td  ><p>130° Diagonal</p></td></tr><tr><td class="firstcol " ><p>Night vision</p></td><td  ><p>Color Night Vision (up to 30 ft) &amp; Infrared</p></td></tr><tr><td class="firstcol " ><p>Power source</p></td><td  ><p>Rechargeable Battery (up to 6 months) or Solar Panel compatible</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>2.4 GHz Wi-Fi</p></td></tr><tr><td class="firstcol " ><p>Storage options</p></td><td  ><p>Local MicroSD (up to 256GB) &amp; Cloud Storage</p></td></tr><tr><td class="firstcol " ><p>Audio</p></td><td  ><p>Two-Way Audio with Noise Cancellation</p></td></tr><tr><td class="firstcol " ><p>Smart integration</p></td><td  ><p>Amazon Alexa, Google Assistant</p></td></tr><tr><td class="firstcol " ><p>Weather resistance</p></td><td  ><p>IP65 Weatherproof</p></td></tr><tr><td class="firstcol " ><p>Motion detection</p></td><td  ><p>AI Person/Vehicle/Pet Detection</p></td></tr><tr><td class="firstcol " ><p>Smart home</p></td><td  ><p>Amazon Alexa</p></td></tr><tr><td class="firstcol " ><p>Camera dimensions</p></td><td  ><p>70 x 70 x 41mm</p></td></tr><tr><td class="firstcol " ><p>Sync Module Core dimensions:</p></td><td  ><p>81 x 45 x 21.55mm</p></td></tr><tr><td class="firstcol " ><p>Weight:</p></td><td  ><p>142g (camera); 43.6g (Sync Module Core)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-blink-outdoor-2k-design"><span>Blink Outdoor 2K+: design</span></h3><ul><li><strong>Compact and easy to place</strong></li><li><strong>IP65 weatherproofing</strong></li><li><strong>Sync Module Core changes rules</strong></li></ul><p>There's nothing here to frighten the neighbours. The 2K+ keeps Blink's small, squared-off black housing, the kind of camera that disappears into a porch corner or sits on a windowsill without announcing itself. It's light, the bundled mount screws to a wall, and you can equally stand it on a flat surface and forget about it.</p><p>The IP65 rating earned its keep through sporadic summer showers and wind with no fogging or dropouts. Power comes from two AA batteries hidden behind a sealed cover, or bypass them with USB-C and an optional weather-resistant power adapter, if you'd rather not think about batteries at all.</p><p>Like the Sync Module 2, Blink’s bundled Sync Module Core is a similarly small puck minus a USB connection. </p><ul><li><strong>Design score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-blink-outdoor-2k-performance"><span>Blink Outdoor 2K+ performance</span></h3><ul><li><strong>2K is a visible upgrade</strong></li><li><strong>Color night vision is useful</strong></li><li><strong>Smart features cost extra</strong></li></ul><p>The Blink Outdoor’s 2K output greatly enhances the chances of identifying strangers. I set it to watch a back garden, and it did an able job of capturing my faux break-in attempts. The 4x zoom is digital, so it softens as you push in, but it's enough to pick up distinguishing features or marks.</p><p>Low-light performance is the other win. An improved sensor holds color as daytime fades, while garden lights and street lamps keep footage useful. Let the light go entirely, and it reverts to black-and-white. For genuine color after dark, you can add Blink's separate Outdoor Floodlight Mount.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hV35r2fYC9579o4WpebNrZ-1920-80.jpg" alt="Three-quarter view of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LaiSVyL48EFpc88j98vMoZ-1920-80.jpg" alt="Three-quarter view of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8azRwLwHzJtrFq6xf3BwTZ-1920-80.jpg" alt="Side of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4a7kTtHn3nzXpSvXAH4ZPZ-1920-80.jpg" alt="Back of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6QxPwzXp7yFDnEZuu4zACZ-1920-80.jpg" alt="Side of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vincUEb5q6reqYhuUAwjcZ-1920-80.jpg" alt="Blink Outdoor 2K+ security camera with mount and batteries on table" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Motion detection was razor-sharp, even if the default settings felt overzealous. Definitely adjust sensitivity and activity zones in the app to avoid being swamped with notifications about plump pigeons and swaying flora… unless you’re aiming for <em>Springwatch</em> in forensic form.</p><p>This is also where the subscription cost bites again: person and vehicle detection — the features that stop your phone buzzing every time a fox crosses the lawn — only switch on with a Blink plan.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yXsP6vKB6J3rhaRPPySZBa-1920-80.jpg" alt="Footage from Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bwe69hCCSsgXypsCjrzTLZ-1920-80.jpg" alt="Footage from Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/k565g4ny95N8RHDKCCSAUZ-1920-80.jpg" alt="Footage from Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Run it free, with the Core module, and you're left with motion alerts and a live view, which is a thinner experience for a 2K camera. As ever, there's no way to view footage on a computer or browser; it's the phone app or nothing.</p><ul><li><strong>Performance score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-blink-outdoor-2k"><span>Should you buy the Blink Outdoor 2K+?</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>A capable 2K camera at a low price, undercut by the storage you'll need to pay for.</p></td><td  ><p>3.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Compact, weatherproof and dead simple.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Sharp 2K video and useful color night vision, with the best features locked behind a subscription.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-19">Buy it if</h2><div class="product"><p><strong>You want a sharp camera for very little cash</strong></p><p>The 2K upgrade is real, and the entry price stays low, especially during Blink's frequent sales.</p></div><div class="product"><p><strong>You value a two-year battery life</strong></p><p>Set it, mount it and largely forget it — the AA lithium endurance is still a standout at this price.</p></div><div class="product"><p><strong>You're a first-time buyer in the Blink or Alexa world</strong></p><p>For someone starting from scratch, this is the easiest home security addition going.</p></div><h2 id="don-t-buy-it-if-10">Don't buy it if</h2><div class="product"><p><strong>You bought Blink to avoid subscriptions</strong></p><p>The bundled Sync Module Core no longer takes a USB drive, so free local storage is off the table unless you own an older module.</p></div><div class="product"><p><strong>You want Matter or HomeKit</strong></p><p>Blink remains its own walled garden — Alexa only, with no Matter, Apple Home or Google Home.</p></div><div class="product"><p><strong>You need top-tier image quality</strong></p><p>2K is a welcome leap, but premium rivals shooting 2K HDR or 4K will still out-resolve it.</p></div><h3 class="article-body__section" id="section-blink-outdoor-2k-also-consider"><span>Blink Outdoor 2K+: also consider</span></h3><p>If you're not sure whether the Blink Outdoor 2K+ is the right home security camera for you, here are two others to keep in mind.</p><div class="product"><a data-dimension112="a75a2cdc-f632-43f6-af22-dbf8d50c537f" data-action="Deal Block" data-label="Blink Mini 2K+The wired indoor sibling with the same 2K sensor and smarts, for less money — handy if you mainly want eyes inside, or outside with the weatherproof adapter." data-dimension48="Blink Mini 2K+The wired indoor sibling with the same 2K sensor and smarts, for less money — handy if you mainly want eyes inside, or outside with the weatherproof adapter." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:938px;"><p class="vanilla-image-block" style="padding-top:103.73%;"><img id="xk4igpL3K9VYrxohCRZ3LB" name="51e5MXklWHL._SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xk4igpL3K9VYrxohCRZ3LB-1920-80.jpg" mos="" align="middle" fullscreen="" width="938" height="973" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Blink Mini 2K+</strong></p><p>The wired indoor sibling with the same 2K sensor and smarts, for less money — handy if you mainly want eyes inside, or outside with the weatherproof adapter.</p></div><div class="product"><a data-dimension112="de5d18f1-7236-4086-bc41-d428ee5c6467" data-action="Deal Block" data-label="Ring Battery Doorbell PlusIf it's the front door you care about, Ring's head-to-toe doorbell covers the same ground with a visitor in mind, albeit with its own subscription." data-dimension48="Ring Battery Doorbell PlusIf it's the front door you care about, Ring's head-to-toe doorbell covers the same ground with a visitor in mind, albeit with its own subscription." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="LRhJTXvARAcJ2N95WS7Jzm" name="51Ij11C0gKL._SL1000_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/LRhJTXvARAcJ2N95WS7Jzm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ring Battery Doorbell Plus</strong></p><p>If it's the front door you care about, Ring's head-to-toe doorbell covers the same ground with a visitor in mind, albeit with its own subscription.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-blink-outdoor-2k"><span>How I tested the Blink Outdoor 2K+</span></h3><ul><li><strong>Tested at a domestic property</strong></li><li><strong>Mounted outdoor</strong></li><li><strong>Assessed video, night vision, audio, and battery</strong></li></ul><p>I lived with the Blink Outdoor 2K+ as a normal household would, mounting it to watch the back garden. I ran it through all three resolution modes, checked color night vision against lit and unlit spaces, and held two-way conversations to judge the audio. The two-year battery claim is, by definition, untestable in weeks, so I've reported Blink's figure and my short-term experience rather than pretending otherwise.</p><p>For more details, see <a href="https://www.techradar.com/news/how-we-test">how we test, rate, and review products at TechRadar</a>.</p> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/home-security/blink-outdoor-2k-plus-review</link>
                                                                            <description>
                            <![CDATA[ The latest iteration of Amazon's tough little cam offers very impressive battery life, but its Sync Module Core no longer allows you to connect USB storage. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">hqmEbZdGQCVvP99LUMjFtk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EkUZtbJBVDSFn4geRmnNNa-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 04 Jul 2026 12:00:00 +0000</pubDate>                                                                                                                                <updated>Mon, 06 Jul 2026 09:49:46 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Chris Price ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/DU2Lv5xHGaNHCjMhkrGY6R-320-70.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EkUZtbJBVDSFn4geRmnNNa-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink Outdoor 2K+ security camera mounted on wall]]></media:description>                                                            <media:text><![CDATA[Blink Outdoor 2K+ security camera mounted on wall]]></media:text>
                                <media:title type="plain"><![CDATA[Blink Outdoor 2K+ security camera mounted on wall]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EkUZtbJBVDSFn4geRmnNNa-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-blink-outdoor-2k-two-minute-review"><span>Blink Outdoor 2K+: two-minute review</span></h3><p>Blink has become the brand you recommend to people who don't really want a security camera. Cheap, painless, owned by Amazon, and a forgiving field of view. The catch was that previous 1080p pictures turned to mush the moment anything moved, or the sun went down.</p><p>The Outdoor 2K+ fixes this by capturing would-be crims at 2560 x 1440 in its top "Best" setting. There's 4x zoom for closer inspections, noise-cancelling two-way audio making doorstep conversations less of a shouting match, and an improved low-light sensor that holds color as the light fades before switching to infrared black-and-white. Drop to 1080p 'Standard' or 720p 'Saver', and you'll claw back a bit of battery life.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/2KEav4Eg3CJ67XssMrvL9a-1920-80.jpg" alt="Blink Outdoor 2K+ security camera with hub on table" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/SzHiL34p4cmfw8xjUnRv4a-1920-80.jpg" alt="Blink Outdoor 2K+ security camera with hub on table" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Blink quotes up to two years from a pair of AA lithium cells, and while I can't fast-forward through two summers to prove it, a fortnight’s daily use barely dented the gauge. There's a USB-C port if you'd rather wire it to the mains with Blink's separately sold weather-resistant adapter, an IP65 rating shrugs off wet weather, and it’s compatible with the existing Outdoor 4 accessory range, so floodlight mounts and battery packs carry over.</p><p>Setup should be the usual Blink doddle. Scan the code, follow the app, pair the Sync Module, done in under 10 minutes with no cabling and no electrician. For a first-time buyer, it's about as low-friction as home security gets, although we did encounter some teething problems connecting the kit to a home Wi-Fi network.</p><p>Then you discover the real kicker. The Outdoor 2K+ ships with a new Sync Module Core rather than the old Sync Module 2 we were supplied with, and the Core has had its USB port removed. That port was the whole point for subscription-averse buyers: plug in a flash drive, store clips locally, pay Amazon nothing.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/3NmKFED9xFicTPq6jGCeTb-1920-80.jpg" alt="Blink Outdoor 2K+ security camera mounted on wall" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/zC6hpx2qsSYo4PHp5sD3wa-1920-80.jpg" alt="Blink Outdoor 2K+ security camera mounted on wall" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Without it, the free experience reduces to live view and motion alerts, while saved recordings, person and vehicle detection and the smarter notifications all sit behind a Blink subscription that starts at £2.50 (about $3.50 / AU$5) a month and rises to £8 (about $10 / AU$20) for unlimited cameras. An older Sync Module 2 still works if you own one, but most people buying this won't.</p><p>It leaves the 2K+ in an odd spot. As a camera, it's the best budget outdoor option Blink has made. As a package, it's less optimal. Judge it on the camera and battery life alone, and it's a comfortable recommendation. Judge it on the small print, and you’ve got a new monthly bill the old model didn’t demand.</p><h3 class="article-body__section" id="section-blink-outdoor-2k-price-and-availability"><span>Blink Outdoor 2K+: price and availability</span></h3><ul><li><strong>List price: £89.99 / $99.99 / AU$119</strong></li><li><strong>Launched October 2025</strong></li><li><strong>Available in the US, UK and Australia</strong></li></ul><p>Pitched at the affordable end as ever, the Outdoor 2K+ slots in alongside the cheaper Mini 2K+ and the Blink Arc — a mount that pairs two Mini 2K+ cameras for a panoramic view — as part of the brand's 2K refresh. The one-camera kit includes the Sync Module Core, two AA lithium batteries, and a mount, so nothing essential to buy on day one — unless you want your footage saved anywhere, at which point the maths changes.</p><p>That's the rub. The headline price buys you a very capable camera and a deliberately hamstrung storage situation. Anyone who bought the Outdoor 4 specifically to dodge a subscription should know the goalposts have moved, because the bundled module no longer takes a USB stick. Frequent discounting means the camera itself rarely costs full RRP for long, which softens the blow, but the ongoing cost is the number to watch.</p><ul><li><strong>Value score: 3.5/5</strong></li></ul><h3 class="article-body__section" id="section-blink-outdoor-2k-subscription-costs"><span>Blink Outdoor 2K+: subscription costs</span></h3><p>Blink has two subscription tiers to choose from, both offering unlimited cloud storage for recordings for up to 60 days (up to 30 days in the EU and UK). Monthly or yearly billing is available.</p><ul><li><strong>Blink Basic: </strong>$3.99p/m | £2.50p/m | AU$4.95p/m</li><li><strong>Blink Plus: </strong>$11.99p/m | £8p/m | AU$15p/m</li></ul><p>Blink Basic includes support for one device, motion-event recording, live-view recording, instant video access, video sharing, person detection, and photo capture. Blink Plus includes all Basic features, along with unlimited device inclusion, moments capture, notification snoozing and 10% off Blink devices.</p><h3 class="article-body__section" id="section-blink-outdoor-2k-specifications"><span>Blink Outdoor 2K+: specifications</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Specification</p></th><th  ><p>Details</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Resolution</p></td><td  ><p>2K QHD (2560 x 1440)</p></td></tr><tr><td class="firstcol " ><p>Field of view</p></td><td  ><p>130° Diagonal</p></td></tr><tr><td class="firstcol " ><p>Night vision</p></td><td  ><p>Color Night Vision (up to 30 ft) &amp; Infrared</p></td></tr><tr><td class="firstcol " ><p>Power source</p></td><td  ><p>Rechargeable Battery (up to 6 months) or Solar Panel compatible</p></td></tr><tr><td class="firstcol " ><p>Connectivity</p></td><td  ><p>2.4 GHz Wi-Fi</p></td></tr><tr><td class="firstcol " ><p>Storage options</p></td><td  ><p>Local MicroSD (up to 256GB) &amp; Cloud Storage</p></td></tr><tr><td class="firstcol " ><p>Audio</p></td><td  ><p>Two-Way Audio with Noise Cancellation</p></td></tr><tr><td class="firstcol " ><p>Smart integration</p></td><td  ><p>Amazon Alexa, Google Assistant</p></td></tr><tr><td class="firstcol " ><p>Weather resistance</p></td><td  ><p>IP65 Weatherproof</p></td></tr><tr><td class="firstcol " ><p>Motion detection</p></td><td  ><p>AI Person/Vehicle/Pet Detection</p></td></tr><tr><td class="firstcol " ><p>Smart home</p></td><td  ><p>Amazon Alexa</p></td></tr><tr><td class="firstcol " ><p>Camera dimensions</p></td><td  ><p>70 x 70 x 41mm</p></td></tr><tr><td class="firstcol " ><p>Sync Module Core dimensions:</p></td><td  ><p>81 x 45 x 21.55mm</p></td></tr><tr><td class="firstcol " ><p>Weight:</p></td><td  ><p>142g (camera); 43.6g (Sync Module Core)</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-blink-outdoor-2k-design"><span>Blink Outdoor 2K+: design</span></h3><ul><li><strong>Compact and easy to place</strong></li><li><strong>IP65 weatherproofing</strong></li><li><strong>Sync Module Core changes rules</strong></li></ul><p>There's nothing here to frighten the neighbours. The 2K+ keeps Blink's small, squared-off black housing, the kind of camera that disappears into a porch corner or sits on a windowsill without announcing itself. It's light, the bundled mount screws to a wall, and you can equally stand it on a flat surface and forget about it.</p><p>The IP65 rating earned its keep through sporadic summer showers and wind with no fogging or dropouts. Power comes from two AA batteries hidden behind a sealed cover, or bypass them with USB-C and an optional weather-resistant power adapter, if you'd rather not think about batteries at all.</p><p>Like the Sync Module 2, Blink’s bundled Sync Module Core is a similarly small puck minus a USB connection. </p><ul><li><strong>Design score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-blink-outdoor-2k-performance"><span>Blink Outdoor 2K+ performance</span></h3><ul><li><strong>2K is a visible upgrade</strong></li><li><strong>Color night vision is useful</strong></li><li><strong>Smart features cost extra</strong></li></ul><p>The Blink Outdoor’s 2K output greatly enhances the chances of identifying strangers. I set it to watch a back garden, and it did an able job of capturing my faux break-in attempts. The 4x zoom is digital, so it softens as you push in, but it's enough to pick up distinguishing features or marks.</p><p>Low-light performance is the other win. An improved sensor holds color as daytime fades, while garden lights and street lamps keep footage useful. Let the light go entirely, and it reverts to black-and-white. For genuine color after dark, you can add Blink's separate Outdoor Floodlight Mount.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/hV35r2fYC9579o4WpebNrZ-1920-80.jpg" alt="Three-quarter view of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/LaiSVyL48EFpc88j98vMoZ-1920-80.jpg" alt="Three-quarter view of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/8azRwLwHzJtrFq6xf3BwTZ-1920-80.jpg" alt="Side of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/4a7kTtHn3nzXpSvXAH4ZPZ-1920-80.jpg" alt="Back of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/6QxPwzXp7yFDnEZuu4zACZ-1920-80.jpg" alt="Side of Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/vincUEb5q6reqYhuUAwjcZ-1920-80.jpg" alt="Blink Outdoor 2K+ security camera with mount and batteries on table" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Motion detection was razor-sharp, even if the default settings felt overzealous. Definitely adjust sensitivity and activity zones in the app to avoid being swamped with notifications about plump pigeons and swaying flora… unless you’re aiming for <em>Springwatch</em> in forensic form.</p><p>This is also where the subscription cost bites again: person and vehicle detection — the features that stop your phone buzzing every time a fox crosses the lawn — only switch on with a Blink plan.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/yXsP6vKB6J3rhaRPPySZBa-1920-80.jpg" alt="Footage from Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/bwe69hCCSsgXypsCjrzTLZ-1920-80.jpg" alt="Footage from Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/k565g4ny95N8RHDKCCSAUZ-1920-80.jpg" alt="Footage from Blink Outdoor 2K+ security camera" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><p>Run it free, with the Core module, and you're left with motion alerts and a live view, which is a thinner experience for a 2K camera. As ever, there's no way to view footage on a computer or browser; it's the phone app or nothing.</p><ul><li><strong>Performance score: 4/5</strong></li></ul><h3 class="article-body__section" id="section-should-you-buy-the-blink-outdoor-2k"><span>Should you buy the Blink Outdoor 2K+?</span></h3><div ><table><thead><tr><th class="firstcol " ><p>Attribute</p></th><th  ><p>Notes</p></th><th  ><p>Score</p></th></tr></thead><tbody><tr><td class="firstcol " ><p>Value</p></td><td  ><p>A capable 2K camera at a low price, undercut by the storage you'll need to pay for.</p></td><td  ><p>3.5/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Compact, weatherproof and dead simple.</p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Sharp 2K video and useful color night vision, with the best features locked behind a subscription.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-19">Buy it if</h2><div class="product"><p><strong>You want a sharp camera for very little cash</strong></p><p>The 2K upgrade is real, and the entry price stays low, especially during Blink's frequent sales.</p></div><div class="product"><p><strong>You value a two-year battery life</strong></p><p>Set it, mount it and largely forget it — the AA lithium endurance is still a standout at this price.</p></div><div class="product"><p><strong>You're a first-time buyer in the Blink or Alexa world</strong></p><p>For someone starting from scratch, this is the easiest home security addition going.</p></div><h2 id="don-t-buy-it-if-10">Don't buy it if</h2><div class="product"><p><strong>You bought Blink to avoid subscriptions</strong></p><p>The bundled Sync Module Core no longer takes a USB drive, so free local storage is off the table unless you own an older module.</p></div><div class="product"><p><strong>You want Matter or HomeKit</strong></p><p>Blink remains its own walled garden — Alexa only, with no Matter, Apple Home or Google Home.</p></div><div class="product"><p><strong>You need top-tier image quality</strong></p><p>2K is a welcome leap, but premium rivals shooting 2K HDR or 4K will still out-resolve it.</p></div><h3 class="article-body__section" id="section-blink-outdoor-2k-also-consider"><span>Blink Outdoor 2K+: also consider</span></h3><p>If you're not sure whether the Blink Outdoor 2K+ is the right home security camera for you, here are two others to keep in mind.</p><div class="product"><a data-dimension112="a75a2cdc-f632-43f6-af22-dbf8d50c537f" data-action="Deal Block" data-label="Blink Mini 2K+The wired indoor sibling with the same 2K sensor and smarts, for less money — handy if you mainly want eyes inside, or outside with the weatherproof adapter." data-dimension48="Blink Mini 2K+The wired indoor sibling with the same 2K sensor and smarts, for less money — handy if you mainly want eyes inside, or outside with the weatherproof adapter." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:938px;"><p class="vanilla-image-block" style="padding-top:103.73%;"><img id="xk4igpL3K9VYrxohCRZ3LB" name="51e5MXklWHL._SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xk4igpL3K9VYrxohCRZ3LB-1920-80.jpg" mos="" align="middle" fullscreen="" width="938" height="973" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Blink Mini 2K+</strong></p><p>The wired indoor sibling with the same 2K sensor and smarts, for less money — handy if you mainly want eyes inside, or outside with the weatherproof adapter.</p></div><div class="product"><a data-dimension112="de5d18f1-7236-4086-bc41-d428ee5c6467" data-action="Deal Block" data-label="Ring Battery Doorbell PlusIf it's the front door you care about, Ring's head-to-toe doorbell covers the same ground with a visitor in mind, albeit with its own subscription." data-dimension48="Ring Battery Doorbell PlusIf it's the front door you care about, Ring's head-to-toe doorbell covers the same ground with a visitor in mind, albeit with its own subscription." target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="LRhJTXvARAcJ2N95WS7Jzm" name="51Ij11C0gKL._SL1000_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/LRhJTXvARAcJ2N95WS7Jzm-1920-80.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Ring Battery Doorbell Plus</strong></p><p>If it's the front door you care about, Ring's head-to-toe doorbell covers the same ground with a visitor in mind, albeit with its own subscription.</p></div><h3 class="article-body__section" id="section-how-i-tested-the-blink-outdoor-2k"><span>How I tested the Blink Outdoor 2K+</span></h3><ul><li><strong>Tested at a domestic property</strong></li><li><strong>Mounted outdoor</strong></li><li><strong>Assessed video, night vision, audio, and battery</strong></li></ul><p>I lived with the Blink Outdoor 2K+ as a normal household would, mounting it to watch the back garden. I ran it through all three resolution modes, checked color night vision against lit and unlit spaces, and held two-way conversations to judge the audio. The two-year battery claim is, by definition, untestable in weeks, so I've reported Blink's figure and my short-term experience rather than pretending otherwise.</p><p>For more details, see <a href="https://www.techradar.com/news/how-we-test">how we test, rate, and review products at TechRadar</a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ The Shark PowerDetect UV Reveal is like giving a caveman a power washer ]]></title>
                                                                                                <dc:content><![CDATA[ <h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-price-release-date"><span>Shark PowerDetect UV Reveal review: Price &amp; release date</span></h3><ul><li><strong>List price: $1,299.99 / £999.99</strong></li><li><strong>Released March 2026</strong></li></ul><p>The Shark PowerDetect UV Reveal comes in at $1,299.99 / £999.99 —<strong> </strong>while it’s far from cheap, it’s pretty good value for what it offers. That being said, there are other robot vacuum cleaners with equally impressive features and better software at a similar price point.</p><p>Plus, you’ll need to maintain some parts of the vacuum; in particular, refills for the multi-floor cleaner ($13.99 / £14.99) and the odor-neutralizing puck ($9.99 – $14.99 / £7.99 – £15.99), as well as the usual replacement for things like side brushes and mop pads. Over time, these can add up, but you’ll scarcely find a robovac that doesn’t come with added costs at similar prices these days.</p><ul><li><strong>Value</strong>: 4/5</li></ul><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-design"><span>Shark PowerDetect UV Reveal review: Design</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/xLvLCHjyL-g" allowfullscreen=""></iframe></div></div><p>Out of the box, you’ll find the vacuum, base, power chord, an anti-odor puck, one refill bottle of Shark’s multi-floor cleaner, two side brushes, plus the usual array of instructions and warranty documents. </p><p>The base stands at 17 x 18 x 14 inches / 43.2 x 45.7 x 35.6 cm, and comes in either black or white — mine was the latter, and I think it looks a lot more premium than the tackier black colorway. Enclosed in the lid of the base are the 2.74-litre / 96.65oz clean and 1.18-litre / 41.62oz waste water tanks, which lift out easily thanks to the retractable handles, as well as the bagless dirt compartment — I really appreciate that Shark opted for this so there’s one less thing to routinely replace. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="ykBig2uXwWTgo9yNjyTb6R" name="Imported image 5 - 1781284609677" alt="Shark PowerDetect UV Reveal base water tanks" src="https://cdn.mos.cms.futurecdn.net/ykBig2uXwWTgo9yNjyTb6R-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can remove the container with the press of a button situated on the side of the dock, and it’s also HEPA-filtered. There’s also a set of two filters you’ll need to clean every 1-2 months, depending on how often you use your robot vacuum, and a slot for one of Shark’s anti-odor pucks should dusty smells be an issue for you.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="pVXp25DMURtQkbne2a9R9R" name="Imported image 4 - 1781284609676" alt="Shark PowerDetect UV Reveal in its base" src="https://cdn.mos.cms.futurecdn.net/pVXp25DMURtQkbne2a9R9R-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The vacuum itself is a fairly standard, rounded 2-in-1 robot vacuum, but a little tall and hefty at 5.35 inches / 13.6cm tall. The top houses its raised puck for LiDAR sensing, which works in tandem with the front of the device, where the cameras and other sensors, including a camera as well as LED and UV lights, to navigate your home and spot messes ripe for cleaning.</p><p>If you’d rather not use the app, you can use the four touch-sensitive buttons to activate mop and vacuum modes, send the vacuum home and connect to the Wi-Fi. A soft bumper surrounds the edges of the vacuum to prevent damage from any collisions, which are remarkably rare thanks to its top-tier obstacle avoidance, and you can remove its dust bin and mop plate from the rear of the device.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WdVLpfEu8cNzuKZwRtBcbW" name="IMG_7525" alt="Underside of the Shark PowerDetect UV Reveal" src="https://cdn.mos.cms.futurecdn.net/WdVLpfEu8cNzuKZwRtBcbW-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On the underside, you’ll find the wheels, brush bar, side brush, and a singular, flat mop pad. These aren’t my favorite type — a rondel will typically offer a deeper clean, better post-clean drying and less water waste. However, Shark has designed the robot vacuum to wiggle this mop pad to agitate dirt, which goes some of the ways to make up the difference.</p><p>Of note is that the vacuum seems to be a total dust magnet. I have mine placed beneath a desk, where I wouldn’t expect excessive levels of dust — however it’s constantly lined with a thick layer of the stuff.</p><ul><li><strong>Design</strong>: 4/5</li></ul><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-performance"><span>Shark PowerDetect UV Reveal review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="MYLCXr8ZiQeJF4prxN5XCR" name="Imported image 6 - 1781284609678" alt="Shark PowerDetect UV Reveal on carpet" src="https://cdn.mos.cms.futurecdn.net/MYLCXr8ZiQeJF4prxN5XCR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Setup for the Shark PowerDetect UV Reveal is pretty simple; using the app, you’ll connect the vacuum to your Wi-Fi, give it a name (I loved some of the suggestions like Clean Latifah), and after that, the robot vacuum will run its first mapping pass. Broadly, mine was accurate; my apartment has a slightly tricky layout for robot vacuums, including a half-tiled, half-carpeted kitchen-living room, and lots of doors to dodge. </p><p>After this first pass, the app will offer you a second mapping run, this time to detect flooring types. If you plan to regularly mop hard floors and have carpets or rugs to avoid, make sure to get this out of the way during setup; I couldn’t find any way to update this map after the fact. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/PjvLPhVuyGe7reRe9oAFPR-1920-80.jpg" alt="Shark PowerDetect UV Reveal debris test on tile" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QmgvKqJAtZRMQLBUfiaqWR-1920-80.jpg" alt="Shark PowerDetect UV Reveal debris test on carpet" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/F9iJpsQAbhgT6rbypcdxKR-1920-80.jpg" alt="Shark PowerDetect UV Reveal on tile cleaning up debris" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 id="cleaning-tests-2">Cleaning tests</h2><p>I performed my standard pickup tests using oats, cornflour and brown rice to compare performance to other robot vacuums I’ve tested, and the results were a mixed bag. When setting the Shark PowerDetect UV Reveal off for a standard, vacuum-only clean, I was immediately impressed as it zig-zagged across my floors, leaving them visibly refreshed — plus, it’s pretty quiet in action. </p><p>On hard floors, it excels thanks to a combination of its side brush, solid suction and the jet of air it blasts at hard-to-reach debris, ensuring floors are spick and span post-clean. On carpet, it’s slightly less impressive, especially in the edge cleaning department, but it still does a decent enough job. Its pickup of larger debris was very impressive on carpet, leaving little to nothing behind, but there was a small amount of powdery debris left behind on my medium-pile rugs — hair, however, is no problem, be it human or pet. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="nfC5CFbT8vAXqBqT6yELXR" name="Imported image 11 - 1781284609686" alt="Shark PowerDetect UV Reveal leftover fine powder debris" src="https://cdn.mos.cms.futurecdn.net/nfC5CFbT8vAXqBqT6yELXR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Next up, I tried a regular combination clean with vacuum and mopping, and that’s where my experience with the Shark PowerDetect UV Reveal became a bit more mixed. The robot vacuum first fills its water tank at the base, proceeding to concurrently vacuum and mop your floors rather than splitting out the tasks. This helps to save time and battery; however, it does increase the risk of soggy carpets. </p><p>To avoid this, the robovac will lift its hind to keep the mop pad from drenching carpets — this reduces its effectiveness on carpets, though, as it crushes the side brush, and sometimes, while navigating, it will spin round and spit water across the floor, too. However, once it reaches hard floors, the results are pretty impressive; the mop pad agitates spills and stains with a back-and-forth scrubbing motion, and will reach into corners to make sure every spot is well-cleaned. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dQMPv4nJuFaFPub8SPSXaR-1920-80.jpg" alt="Shark PowerDetect UV Reveal lifting its mop pad" /><figcaption>Shark PowerDetect UV Reveal lifting its mop pad<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9AGddAaBCfKuzAy7vcxjVR-1920-80.jpg" alt="Shark PowerDetect UV Reveal lifting its mop pad" /><figcaption>Shark PowerDetect UV Reveal lifting its mop pad<small role="credit">Future</small></figcaption></figure></figure><p>It does use a <em>lot</em> of water, though, and especially if you’re cleaning up larger spills, that means the PowerDetect UV Reveal can leave a streaky mess in its wake. I noticed this even more so when there was lots of debris to vacuum up during the clean; the PowerDetect UV Reveal left a clump of soggy oats behind like an owl pellet as well as white streaky marks across the floor, but I wouldn’t typically recommend regularly using your robot vacuum to collect large volume spills anyway. I have especially reflective kitchen tiles, so I noticed this a lot; on my less shiny bathroom tiles, it wasn’t as much of a problem. </p><p>Powering up to a higher suction or mopping setting does result in a more thorough cleaning job, especially on carpets, but it’s worth noting that this seems to make the excess water usage more noticeable. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="e6kBJTHG7q6SwdUfkJcXaR" name="Imported image 14 - 1781284609690" alt="Shark PowerDetect UV Reveal left streaky marks on tile" src="https://cdn.mos.cms.futurecdn.net/e6kBJTHG7q6SwdUfkJcXaR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Some smeared oats, milady? I wouldn't advise using the Shark PowerDetect UV Reveal, or indeed most robot vacuums that mop and vacuum concurrently, to clear up high volumes of debris. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="object-detection-and-navigation">Object detection and navigation</h2><p>When the Shark PowerDetect UV Reveal works, it <em>really</em> works, but I encountered a fair few bugs and limitations that do impact its overall effectiveness — for example, when doing a combination clean, it sometimes skips cleaning certain areas and rooms, or neglects to clean areas I’ve specifically asked it to. </p><p>Its LiDAR scanner makes accurate room maps, though they’ll be a bit odd-looking if you have lots of furniture at floor level. That’s unavoidable, to a degree, but I wish it had investigated those areas more closely to find the real edges of the walls; that way if furniture moves around your home, you wouldn’t need to remap. </p><p>Its object detection is incredible — perhaps too good, as the robot vacuum avoided my low-hanging (but not floor-length) curtains like the plague, giving wide berth to even the most inconsequential of obstacles. Generally, it’s not too much of a problem, but improved smarts would mean there’s slightly less preparation required pre-clean to ensure your entire floor gets cleaned properly. I was also massively impressed by the ease with which it lifted itself over and cleared thresholds, chair legs, and the like, leading to quicker cleans. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4u2tvw2cGtyrqXkx2N6QdR-1920-80.jpg" alt="Shark PowerDetect UV Reveal using UV detection" /><figcaption>UV detection in action, as well as some rugs the vacuum fought (and defeated)<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/z8wNuCZU6tzAFS6QM6HJgR-1920-80.jpg" alt="Shark PowerDetect UV Reveal using UV detection" /><figcaption>UV detection in action. <small role="credit">Future</small></figcaption></figure></figure><h2 id="uv-detection">UV detection</h2><p>After its standard cleaning cycles, the robovac will return to its base, but the cleaning isn’t over quite yet. It’ll issue an ominous warning once it’s refreshed itself: "I detected stains. I'm heading back out to aggressively attack them." </p><p>Here’s where the magic of the PowerDetect UV Reveal is really on show; as it cleans, it flares a blue UV light, with which you can see for yourself the stubborn and sometimes invisible stains on your floor, which it will then return to after a standard cleaning run. It was pretty cringe-inducing to watch it navigate areas I hadn’t cleaned recently and see just how much grime was there. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="DSHhhoCdgPmCyYpHRwF9jR" name="Imported image 17 - 1781284609692" alt="Shark PowerDetect UV Reveal in its base" src="https://cdn.mos.cms.futurecdn.net/DSHhhoCdgPmCyYpHRwF9jR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="dock">Dock </h2><p>After the job’s complete, it’ll return for a final time to the base and begin the mop pad maintenance process quietly in the background with just a low humming noise, washing it with hot water before drying it to reduce contamination. In my testing, the robovac lived up to its estimated 3-hour battery life; a 45-minute clean on standard settings dropped the battery by 25%. A full recharge takes roughly 4 hours, and the vacuum won’t perform new tasks when at less than 20%.</p><ul><li><strong>Performance: </strong>4/5</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="NKATf9KdmuTkVCppwviwnR" name="Imported image 18 - 1781284609693" alt="Shark PowerDetect UV Reveal app maps and screenshots" src="https://cdn.mos.cms.futurecdn.net/NKATf9KdmuTkVCppwviwnR-1920-80.png" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The first of these three screenshots shows my completed floor map; as you can see from the very odd shapes, the LiDAR scanner can be quite assumptive with obstacles and won't investigate around the sides to find where the wall truly starts and ends. The second and third screenshots show two seperate occasions where I asked the robot vacuum to clean specific rooms and it elected to clean a completely different one.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-software-and-app"><span>Shark PowerDetect UV Reveal review: Software and app </span></h3><p>The app is quite restrictive when it comes to home and schedule customization;  you can only have one map, so multi-floor cleaning isn’t possible, no-go zones are always rectangular and you can only create two schedules per day. </p><p>I also noticed that the robot vacuum would often get confused when it initiated a clean, forging straight to the corner of my living room and spinning there for a good few minutes before figuring out its path to the hallway. On closer inspection, this happened most frequently when I sent it to clean somewhere other than its home room; for some reason, it wanted to head straight through my wall instead of around and through the doorway. </p><p>I couldn’t find a quiet mode, either, meaning if you ever wanted to use the vacuum at night or when little ones are sleeping, they might awaken to an ominous threat from your robovac. </p><p>These issues, among other software quirks, make for the primary complaint I have surrounding the Shark PowerDetect UV reveal; its app and on-board smarts hold back an otherwise high-performance robot vacuum. </p><ul><li><strong>Software</strong>: 2.5/5</li></ul><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-specs"><span>Shark PowerDetect UV Reveal review: Specs</span></h3><div ><table><caption>Specs</caption><tbody><tr><td class="firstcol " ><p>Wattage (robot):</p></td><td  ><p><em>65W</em></p></td></tr><tr><td class="firstcol " ><p>Robot diameter:</p></td><td  ><p><em>13.2 inches / 34cm</em></p></td></tr><tr><td class="firstcol " ><p>Robot height:</p></td><td  ><p><em>4 inches / 10.2cm </em></p></td></tr><tr><td class="firstcol " ><p>Cleaning path width:</p></td><td  ><p><em>Not specified</em></p></td></tr><tr><td class="firstcol " ><p>Dock dimensions (H x W x D):</p></td><td  ><p><em>17 x 18 x 14 inches / 43.2 x 45.7 x 35.6 cm</em></p></td></tr><tr><td class="firstcol " ><p>Dock cord:</p></td><td  ><p><em>3.9ft / 1.2m</em></p></td></tr><tr><td class="firstcol " ><p>Weight (robot + dock):</p></td><td  ><p><em>26.9 lbs / 12.21 kg</em></p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-should-i-buy-shark-powerdetect-uv-reveal"><span>Should I buy Shark PowerDetect UV Reveal?</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Section</p></td><td  ><p>Notes</p></td><td  ><p>Score</p></td></tr><tr><td class="firstcol " ><p>Software and app</p></td><td  ><p>There are lots of features I’d expect as standard in a robot vacuum, especially at this list price, that Shark just hasn’t added. That and the litany of odd bugs drop the overall score significantly.</p></td><td  ><p>2.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Great for vacuuming carpets, and while the mop pad is a bit of a hazard, with UV sensing in tow it offers a truly deep clean. </p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Neutral, bag-less and easy to maintain, the only thing I could ask for would be a slightly more premium feel in its black colorway. Plus, it’s a dust-magnet.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Given its innovative features and thorough cleaning, it’s sitting pretty at its list price compared to the competition, but loses points for the in-app experience.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-20">Buy it if…</h2><p><strong>You value well sanitized floors</strong><br />With its UV detection, the Shark PowerDetect UV Reveal offers peace of mind and broadly great results, especially in the mopping department… if you can handle slow-drying floors.</p><p><strong>You have pets</strong><br />Again, the UV detection comes in clutch here for invisible pet messes, but it’s also a deft hand at hair collection. </p><p><strong>You have a large home</strong><br />With its great battery life and efficiency, the Shark PowerDetect UV Reveal is unlikely to run out of juice before finishing the job even in larger homes.</p><h2 id="don-t-buy-it-if-11">Don’t buy it if…</h2><p><strong>You have lots of wooden floors</strong> <strong>or shiny tiles</strong></p><p>While it’ll clean these floor types within an inch of their life, the residual water and cleaning solution could warp or damage wooden floors and leave streaky marks on particularly reflective ones.</p><p><strong>You have lots of carpet</strong><br />Don’t get me wrong, this is an accomplished vacuum for carpets, but if you want to do combination cleans, you might end up with a few soggy spots left in its wake.</p><p><strong>You want to vacuum multiple floors — or other smart features</strong></p><p>I liken the Shark PowerDetect UV Reveal to a power washer in the hands of a caveman; it’s only as good as the software allows it to be, and with frustrations like single-floor mapping, ignored instructions and </p><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-also-consider"><span>Shark PowerDetect UV Reveal review: Also consider</span></h3><div class="product"><a data-dimension112="8c3100cb-9315-43b4-92cb-7e9586b08ad3" data-action="Deal Block" data-label="Read our full Eufy X10 Pro Omni review" data-dimension48="Read our full Eufy X10 Pro Omni review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:690px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="9WXucBivVbc8U5DWA4cyB7" name="Eufy X10 Pro Omni" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9WXucBivVbc8U5DWA4cyB7-1920-80.png" mos="" align="middle" fullscreen="" width="690" height="690" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Eufy X10 Pro Omni </strong></p><p>Another two-in-one robovac with excellent cleaning on all floor types, plus strong mapping and navigation.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/robot-vacuums/eufy-x10-pro-omni" data-dimension112="8c3100cb-9315-43b4-92cb-7e9586b08ad3" data-action="Deal Block" data-label="Read our full Eufy X10 Pro Omni review" data-dimension48="Read our full Eufy X10 Pro Omni review" data-dimension25=""><strong>Eufy X10 Pro Omni review</strong></a></p></div><div class="product"><a data-dimension112="18fec5f1-9a38-4e3c-9218-5de4f03a7f33" data-action="Deal Block" data-label="See our full Roborock Qrevo Curv review" data-dimension48="See our full Roborock Qrevo Curv review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:853px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FNanc3r5VzaxvCwMk9dqPW" name="Roborock Qrevo Curv 5A1" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FNanc3r5VzaxvCwMk9dqPW-1920-80.jpg" mos="" align="middle" fullscreen="" width="853" height="853" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Roborock Qrevo Curv</strong></p><p>A robot vacuum and mop that delivers superb suction and great wet floor cleaning. It's the best robovac we've tested to date.</p><p><strong>See our full </strong><a href="https://www.techradar.com/home/robot-vacuums/roborock-qrevo-curv-review" data-dimension112="18fec5f1-9a38-4e3c-9218-5de4f03a7f33" data-action="Deal Block" data-label="See our full Roborock Qrevo Curv review" data-dimension48="See our full Roborock Qrevo Curv review" data-dimension25=""><strong>Roborock Qrevo Curv review</strong></a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-shark-powerdetect-uv-reveal"><span>How I tested the Shark PowerDetect UV Reveal</span></h3><p>I tested the Shark PowerDetect UV Reveal for two weeks in my home, completing my standardised pickup, edge cleaning and mopping tests in addition to simulating tests for features like UV detection. I used the app, making a map of my home and testing various features like scheduling and room-by-room cleaning tasks, closely observing the vacuum when in use to note any navigation or performance issues during testing. </p><ul><li><a href="https://www.techradar.com/news/how-we-test"><u>Read TechRadar’s reviews guarantee</u></a></li><li><em>First reviewed June 2026</em></li></ul> ]]></dc:content>
                                                                                                                                            <link>https://www.techradar.com/home/robot-vacuums/sharks-powerdetect-uv-reveal-has-a-lot-of-potential-but-right-now-its-the-equivalent-of-a-power-washer-in-the-hands-of-a-caveman</link>
                                                                            <description>
                            <![CDATA[ Narwal’s 2026 flagship robot vacuum is outfitted with video cameras and super smart AI cleaning technology to work out the best way to tackle your home. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">6mXNRLVgXeQ5hZcHFBMpYQ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/GzJjFBsfnQybfRpLj4qBGR-1920-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 15:21:47 +0000</pubDate>                                                                                                                                <updated>Sat, 27 Jun 2026 20:14:36 +0000</updated>
                                                                                                                                            <category><![CDATA[Robot Vacuums]]></category>
                                                    <category><![CDATA[Vacuums]]></category>
                                                    <category><![CDATA[Small Appliances]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                                                                <author><![CDATA[ josephine.watson@futurenet.com (Josephine Watson) ]]></author>                    <dc:creator><![CDATA[ Josephine Watson ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HvpGKcNNvrNZunUL6mqd8c-320-70.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Josephine Watson is TechRadar&#039;s Managing Editor - Social &amp; Engagement, overseeing TechRadar&#039;s team of new format and operational efficiency experts. Josephine is an award-winning journalist (PPA 30 under 30 2024), having previously written on a variety of topics, from lifestyle to pop culture to gaming and even the energy industry, joining TechRadar to support general site management. She is based in London.&lt;/p&gt;&lt;p&gt;Growing up living and breathing technology, Josephine was part of the first wave of internet-literate young people and developed a love of all things online content, especially when it comes to gaming, pop culture, or science. She is a huge advocate for internet safety and education, appearing on Channel 4 News in her teenage years to challenge reports of rampant online dangers and encourage wider education on internet safety and protocols. Throughout her career, she has also made a point of using her position to fight for progression in the treatment of diversity and inclusion, mental health, and neurodiversity in corporate settings. Josephine is responsible for TechRadar&#039;s recent push into sustainability-related content, as well as starring in the &lt;a href=&quot;https://www.youtube.com/@techradar&quot;&gt;TechRadar podcast&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Josephine received her Bachelor of the Arts in English Literature from Queen Mary, University of London, having spent a year abroad studying at Hunter College in New York. She has also completed a L3 People Leadership qualification as well as a L7 Senior Journalism apprenticeship through the University of Sunderland. &lt;/p&gt;&lt;p&gt;In her spare time, you&#039;ll find Josephine fiddling with smart home devices, playing whichever Nintendo game she&#039;s recently acquired, developing an obsession over some new creative hobby she&#039;ll drop in a few months or watching Disney movies. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                                                                    <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/GzJjFBsfnQybfRpLj4qBGR-1920-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Shark PowerDetect UV Reveal on carpet]]></media:description>                                                            <media:text><![CDATA[Shark PowerDetect UV Reveal on carpet]]></media:text>
                                <media:title type="plain"><![CDATA[Shark PowerDetect UV Reveal on carpet]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/GzJjFBsfnQybfRpLj4qBGR-1920-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-price-release-date"><span>Shark PowerDetect UV Reveal review: Price &amp; release date</span></h3><ul><li><strong>List price: $1,299.99 / £999.99</strong></li><li><strong>Released March 2026</strong></li></ul><p>The Shark PowerDetect UV Reveal comes in at $1,299.99 / £999.99 —<strong> </strong>while it’s far from cheap, it’s pretty good value for what it offers. That being said, there are other robot vacuum cleaners with equally impressive features and better software at a similar price point.</p><p>Plus, you’ll need to maintain some parts of the vacuum; in particular, refills for the multi-floor cleaner ($13.99 / £14.99) and the odor-neutralizing puck ($9.99 – $14.99 / £7.99 – £15.99), as well as the usual replacement for things like side brushes and mop pads. Over time, these can add up, but you’ll scarcely find a robovac that doesn’t come with added costs at similar prices these days.</p><ul><li><strong>Value</strong>: 4/5</li></ul><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-design"><span>Shark PowerDetect UV Reveal review: Design</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/xLvLCHjyL-g" allowfullscreen=""></iframe></div></div><p>Out of the box, you’ll find the vacuum, base, power chord, an anti-odor puck, one refill bottle of Shark’s multi-floor cleaner, two side brushes, plus the usual array of instructions and warranty documents. </p><p>The base stands at 17 x 18 x 14 inches / 43.2 x 45.7 x 35.6 cm, and comes in either black or white — mine was the latter, and I think it looks a lot more premium than the tackier black colorway. Enclosed in the lid of the base are the 2.74-litre / 96.65oz clean and 1.18-litre / 41.62oz waste water tanks, which lift out easily thanks to the retractable handles, as well as the bagless dirt compartment — I really appreciate that Shark opted for this so there’s one less thing to routinely replace. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="ykBig2uXwWTgo9yNjyTb6R" name="Imported image 5 - 1781284609677" alt="Shark PowerDetect UV Reveal base water tanks" src="https://cdn.mos.cms.futurecdn.net/ykBig2uXwWTgo9yNjyTb6R-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You can remove the container with the press of a button situated on the side of the dock, and it’s also HEPA-filtered. There’s also a set of two filters you’ll need to clean every 1-2 months, depending on how often you use your robot vacuum, and a slot for one of Shark’s anti-odor pucks should dusty smells be an issue for you.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="pVXp25DMURtQkbne2a9R9R" name="Imported image 4 - 1781284609676" alt="Shark PowerDetect UV Reveal in its base" src="https://cdn.mos.cms.futurecdn.net/pVXp25DMURtQkbne2a9R9R-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The vacuum itself is a fairly standard, rounded 2-in-1 robot vacuum, but a little tall and hefty at 5.35 inches / 13.6cm tall. The top houses its raised puck for LiDAR sensing, which works in tandem with the front of the device, where the cameras and other sensors, including a camera as well as LED and UV lights, to navigate your home and spot messes ripe for cleaning.</p><p>If you’d rather not use the app, you can use the four touch-sensitive buttons to activate mop and vacuum modes, send the vacuum home and connect to the Wi-Fi. A soft bumper surrounds the edges of the vacuum to prevent damage from any collisions, which are remarkably rare thanks to its top-tier obstacle avoidance, and you can remove its dust bin and mop plate from the rear of the device.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5712px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WdVLpfEu8cNzuKZwRtBcbW" name="IMG_7525" alt="Underside of the Shark PowerDetect UV Reveal" src="https://cdn.mos.cms.futurecdn.net/WdVLpfEu8cNzuKZwRtBcbW-1920-80.jpg" mos="" align="middle" fullscreen="" width="5712" height="3213" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On the underside, you’ll find the wheels, brush bar, side brush, and a singular, flat mop pad. These aren’t my favorite type — a rondel will typically offer a deeper clean, better post-clean drying and less water waste. However, Shark has designed the robot vacuum to wiggle this mop pad to agitate dirt, which goes some of the ways to make up the difference.</p><p>Of note is that the vacuum seems to be a total dust magnet. I have mine placed beneath a desk, where I wouldn’t expect excessive levels of dust — however it’s constantly lined with a thick layer of the stuff.</p><ul><li><strong>Design</strong>: 4/5</li></ul><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-performance"><span>Shark PowerDetect UV Reveal review: Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="MYLCXr8ZiQeJF4prxN5XCR" name="Imported image 6 - 1781284609678" alt="Shark PowerDetect UV Reveal on carpet" src="https://cdn.mos.cms.futurecdn.net/MYLCXr8ZiQeJF4prxN5XCR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Setup for the Shark PowerDetect UV Reveal is pretty simple; using the app, you’ll connect the vacuum to your Wi-Fi, give it a name (I loved some of the suggestions like Clean Latifah), and after that, the robot vacuum will run its first mapping pass. Broadly, mine was accurate; my apartment has a slightly tricky layout for robot vacuums, including a half-tiled, half-carpeted kitchen-living room, and lots of doors to dodge. </p><p>After this first pass, the app will offer you a second mapping run, this time to detect flooring types. If you plan to regularly mop hard floors and have carpets or rugs to avoid, make sure to get this out of the way during setup; I couldn’t find any way to update this map after the fact. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/PjvLPhVuyGe7reRe9oAFPR-1920-80.jpg" alt="Shark PowerDetect UV Reveal debris test on tile" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/QmgvKqJAtZRMQLBUfiaqWR-1920-80.jpg" alt="Shark PowerDetect UV Reveal debris test on carpet" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/F9iJpsQAbhgT6rbypcdxKR-1920-80.jpg" alt="Shark PowerDetect UV Reveal on tile cleaning up debris" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h2 id="cleaning-tests-2">Cleaning tests</h2><p>I performed my standard pickup tests using oats, cornflour and brown rice to compare performance to other robot vacuums I’ve tested, and the results were a mixed bag. When setting the Shark PowerDetect UV Reveal off for a standard, vacuum-only clean, I was immediately impressed as it zig-zagged across my floors, leaving them visibly refreshed — plus, it’s pretty quiet in action. </p><p>On hard floors, it excels thanks to a combination of its side brush, solid suction and the jet of air it blasts at hard-to-reach debris, ensuring floors are spick and span post-clean. On carpet, it’s slightly less impressive, especially in the edge cleaning department, but it still does a decent enough job. Its pickup of larger debris was very impressive on carpet, leaving little to nothing behind, but there was a small amount of powdery debris left behind on my medium-pile rugs — hair, however, is no problem, be it human or pet. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="nfC5CFbT8vAXqBqT6yELXR" name="Imported image 11 - 1781284609686" alt="Shark PowerDetect UV Reveal leftover fine powder debris" src="https://cdn.mos.cms.futurecdn.net/nfC5CFbT8vAXqBqT6yELXR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Next up, I tried a regular combination clean with vacuum and mopping, and that’s where my experience with the Shark PowerDetect UV Reveal became a bit more mixed. The robot vacuum first fills its water tank at the base, proceeding to concurrently vacuum and mop your floors rather than splitting out the tasks. This helps to save time and battery; however, it does increase the risk of soggy carpets. </p><p>To avoid this, the robovac will lift its hind to keep the mop pad from drenching carpets — this reduces its effectiveness on carpets, though, as it crushes the side brush, and sometimes, while navigating, it will spin round and spit water across the floor, too. However, once it reaches hard floors, the results are pretty impressive; the mop pad agitates spills and stains with a back-and-forth scrubbing motion, and will reach into corners to make sure every spot is well-cleaned. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/dQMPv4nJuFaFPub8SPSXaR-1920-80.jpg" alt="Shark PowerDetect UV Reveal lifting its mop pad" /><figcaption>Shark PowerDetect UV Reveal lifting its mop pad<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/9AGddAaBCfKuzAy7vcxjVR-1920-80.jpg" alt="Shark PowerDetect UV Reveal lifting its mop pad" /><figcaption>Shark PowerDetect UV Reveal lifting its mop pad<small role="credit">Future</small></figcaption></figure></figure><p>It does use a <em>lot</em> of water, though, and especially if you’re cleaning up larger spills, that means the PowerDetect UV Reveal can leave a streaky mess in its wake. I noticed this even more so when there was lots of debris to vacuum up during the clean; the PowerDetect UV Reveal left a clump of soggy oats behind like an owl pellet as well as white streaky marks across the floor, but I wouldn’t typically recommend regularly using your robot vacuum to collect large volume spills anyway. I have especially reflective kitchen tiles, so I noticed this a lot; on my less shiny bathroom tiles, it wasn’t as much of a problem. </p><p>Powering up to a higher suction or mopping setting does result in a more thorough cleaning job, especially on carpets, but it’s worth noting that this seems to make the excess water usage more noticeable. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="e6kBJTHG7q6SwdUfkJcXaR" name="Imported image 14 - 1781284609690" alt="Shark PowerDetect UV Reveal left streaky marks on tile" src="https://cdn.mos.cms.futurecdn.net/e6kBJTHG7q6SwdUfkJcXaR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">Some smeared oats, milady? I wouldn't advise using the Shark PowerDetect UV Reveal, or indeed most robot vacuums that mop and vacuum concurrently, to clear up high volumes of debris. </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="object-detection-and-navigation">Object detection and navigation</h2><p>When the Shark PowerDetect UV Reveal works, it <em>really</em> works, but I encountered a fair few bugs and limitations that do impact its overall effectiveness — for example, when doing a combination clean, it sometimes skips cleaning certain areas and rooms, or neglects to clean areas I’ve specifically asked it to. </p><p>Its LiDAR scanner makes accurate room maps, though they’ll be a bit odd-looking if you have lots of furniture at floor level. That’s unavoidable, to a degree, but I wish it had investigated those areas more closely to find the real edges of the walls; that way if furniture moves around your home, you wouldn’t need to remap. </p><p>Its object detection is incredible — perhaps too good, as the robot vacuum avoided my low-hanging (but not floor-length) curtains like the plague, giving wide berth to even the most inconsequential of obstacles. Generally, it’s not too much of a problem, but improved smarts would mean there’s slightly less preparation required pre-clean to ensure your entire floor gets cleaned properly. I was also massively impressed by the ease with which it lifted itself over and cleared thresholds, chair legs, and the like, leading to quicker cleans. </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/4u2tvw2cGtyrqXkx2N6QdR-1920-80.jpg" alt="Shark PowerDetect UV Reveal using UV detection" /><figcaption>UV detection in action, as well as some rugs the vacuum fought (and defeated)<small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/z8wNuCZU6tzAFS6QM6HJgR-1920-80.jpg" alt="Shark PowerDetect UV Reveal using UV detection" /><figcaption>UV detection in action. <small role="credit">Future</small></figcaption></figure></figure><h2 id="uv-detection">UV detection</h2><p>After its standard cleaning cycles, the robovac will return to its base, but the cleaning isn’t over quite yet. It’ll issue an ominous warning once it’s refreshed itself: "I detected stains. I'm heading back out to aggressively attack them." </p><p>Here’s where the magic of the PowerDetect UV Reveal is really on show; as it cleans, it flares a blue UV light, with which you can see for yourself the stubborn and sometimes invisible stains on your floor, which it will then return to after a standard cleaning run. It was pretty cringe-inducing to watch it navigate areas I hadn’t cleaned recently and see just how much grime was there. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="DSHhhoCdgPmCyYpHRwF9jR" name="Imported image 17 - 1781284609692" alt="Shark PowerDetect UV Reveal in its base" src="https://cdn.mos.cms.futurecdn.net/DSHhhoCdgPmCyYpHRwF9jR-1920-80.jpg" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h2 id="dock">Dock </h2><p>After the job’s complete, it’ll return for a final time to the base and begin the mop pad maintenance process quietly in the background with just a low humming noise, washing it with hot water before drying it to reduce contamination. In my testing, the robovac lived up to its estimated 3-hour battery life; a 45-minute clean on standard settings dropped the battery by 25%. A full recharge takes roughly 4 hours, and the vacuum won’t perform new tasks when at less than 20%.</p><ul><li><strong>Performance: </strong>4/5</li></ul><figure class="van-image-figure  inline-layout" data-bordeaux-image-check="" ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:602px;"><p class="vanilla-image-block" style="padding-top:56.31%;"><img id="NKATf9KdmuTkVCppwviwnR" name="Imported image 18 - 1781284609693" alt="Shark PowerDetect UV Reveal app maps and screenshots" src="https://cdn.mos.cms.futurecdn.net/NKATf9KdmuTkVCppwviwnR-1920-80.png" mos="" align="middle" fullscreen="" width="602" height="339" attribution="" endorsement="" class="inline" /></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="caption-text">The first of these three screenshots shows my completed floor map; as you can see from the very odd shapes, the LiDAR scanner can be quite assumptive with obstacles and won't investigate around the sides to find where the wall truly starts and ends. The second and third screenshots show two seperate occasions where I asked the robot vacuum to clean specific rooms and it elected to clean a completely different one.  </span><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-software-and-app"><span>Shark PowerDetect UV Reveal review: Software and app </span></h3><p>The app is quite restrictive when it comes to home and schedule customization;  you can only have one map, so multi-floor cleaning isn’t possible, no-go zones are always rectangular and you can only create two schedules per day. </p><p>I also noticed that the robot vacuum would often get confused when it initiated a clean, forging straight to the corner of my living room and spinning there for a good few minutes before figuring out its path to the hallway. On closer inspection, this happened most frequently when I sent it to clean somewhere other than its home room; for some reason, it wanted to head straight through my wall instead of around and through the doorway. </p><p>I couldn’t find a quiet mode, either, meaning if you ever wanted to use the vacuum at night or when little ones are sleeping, they might awaken to an ominous threat from your robovac. </p><p>These issues, among other software quirks, make for the primary complaint I have surrounding the Shark PowerDetect UV reveal; its app and on-board smarts hold back an otherwise high-performance robot vacuum. </p><ul><li><strong>Software</strong>: 2.5/5</li></ul><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-specs"><span>Shark PowerDetect UV Reveal review: Specs</span></h3><div ><table><caption>Specs</caption><tbody><tr><td class="firstcol " ><p>Wattage (robot):</p></td><td  ><p><em>65W</em></p></td></tr><tr><td class="firstcol " ><p>Robot diameter:</p></td><td  ><p><em>13.2 inches / 34cm</em></p></td></tr><tr><td class="firstcol " ><p>Robot height:</p></td><td  ><p><em>4 inches / 10.2cm </em></p></td></tr><tr><td class="firstcol " ><p>Cleaning path width:</p></td><td  ><p><em>Not specified</em></p></td></tr><tr><td class="firstcol " ><p>Dock dimensions (H x W x D):</p></td><td  ><p><em>17 x 18 x 14 inches / 43.2 x 45.7 x 35.6 cm</em></p></td></tr><tr><td class="firstcol " ><p>Dock cord:</p></td><td  ><p><em>3.9ft / 1.2m</em></p></td></tr><tr><td class="firstcol " ><p>Weight (robot + dock):</p></td><td  ><p><em>26.9 lbs / 12.21 kg</em></p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-should-i-buy-shark-powerdetect-uv-reveal"><span>Should I buy Shark PowerDetect UV Reveal?</span></h3><div ><table><tbody><tr><td class="firstcol " ><p>Section</p></td><td  ><p>Notes</p></td><td  ><p>Score</p></td></tr><tr><td class="firstcol " ><p>Software and app</p></td><td  ><p>There are lots of features I’d expect as standard in a robot vacuum, especially at this list price, that Shark just hasn’t added. That and the litany of odd bugs drop the overall score significantly.</p></td><td  ><p>2.5/5</p></td></tr><tr><td class="firstcol " ><p>Performance</p></td><td  ><p>Great for vacuuming carpets, and while the mop pad is a bit of a hazard, with UV sensing in tow it offers a truly deep clean. </p></td><td  ><p>4/5</p></td></tr><tr><td class="firstcol " ><p>Design</p></td><td  ><p>Neutral, bag-less and easy to maintain, the only thing I could ask for would be a slightly more premium feel in its black colorway. Plus, it’s a dust-magnet.</p></td><td  ><p>4.5/5</p></td></tr><tr><td class="firstcol " ><p>Value</p></td><td  ><p>Given its innovative features and thorough cleaning, it’s sitting pretty at its list price compared to the competition, but loses points for the in-app experience.</p></td><td  ><p>4/5</p></td></tr></tbody></table></div><h2 id="buy-it-if-20">Buy it if…</h2><p><strong>You value well sanitized floors</strong><br />With its UV detection, the Shark PowerDetect UV Reveal offers peace of mind and broadly great results, especially in the mopping department… if you can handle slow-drying floors.</p><p><strong>You have pets</strong><br />Again, the UV detection comes in clutch here for invisible pet messes, but it’s also a deft hand at hair collection. </p><p><strong>You have a large home</strong><br />With its great battery life and efficiency, the Shark PowerDetect UV Reveal is unlikely to run out of juice before finishing the job even in larger homes.</p><h2 id="don-t-buy-it-if-11">Don’t buy it if…</h2><p><strong>You have lots of wooden floors</strong> <strong>or shiny tiles</strong></p><p>While it’ll clean these floor types within an inch of their life, the residual water and cleaning solution could warp or damage wooden floors and leave streaky marks on particularly reflective ones.</p><p><strong>You have lots of carpet</strong><br />Don’t get me wrong, this is an accomplished vacuum for carpets, but if you want to do combination cleans, you might end up with a few soggy spots left in its wake.</p><p><strong>You want to vacuum multiple floors — or other smart features</strong></p><p>I liken the Shark PowerDetect UV Reveal to a power washer in the hands of a caveman; it’s only as good as the software allows it to be, and with frustrations like single-floor mapping, ignored instructions and </p><h3 class="article-body__section" id="section-shark-powerdetect-uv-reveal-review-also-consider"><span>Shark PowerDetect UV Reveal review: Also consider</span></h3><div class="product"><a data-dimension112="8c3100cb-9315-43b4-92cb-7e9586b08ad3" data-action="Deal Block" data-label="Read our full Eufy X10 Pro Omni review" data-dimension48="Read our full Eufy X10 Pro Omni review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:690px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="9WXucBivVbc8U5DWA4cyB7" name="Eufy X10 Pro Omni" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9WXucBivVbc8U5DWA4cyB7-1920-80.png" mos="" align="middle" fullscreen="" width="690" height="690" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Eufy X10 Pro Omni </strong></p><p>Another two-in-one robovac with excellent cleaning on all floor types, plus strong mapping and navigation.</p><p><strong>Read our full </strong><a href="https://www.techradar.com/home/robot-vacuums/eufy-x10-pro-omni" data-dimension112="8c3100cb-9315-43b4-92cb-7e9586b08ad3" data-action="Deal Block" data-label="Read our full Eufy X10 Pro Omni review" data-dimension48="Read our full Eufy X10 Pro Omni review" data-dimension25=""><strong>Eufy X10 Pro Omni review</strong></a></p></div><div class="product"><a data-dimension112="18fec5f1-9a38-4e3c-9218-5de4f03a7f33" data-action="Deal Block" data-label="See our full Roborock Qrevo Curv review" data-dimension48="See our full Roborock Qrevo Curv review" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:853px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FNanc3r5VzaxvCwMk9dqPW" name="Roborock Qrevo Curv 5A1" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FNanc3r5VzaxvCwMk9dqPW-1920-80.jpg" mos="" align="middle" fullscreen="" width="853" height="853" attribution="" endorsement="" credit="" class="" /></p></div></div></figure></a><p><strong>Roborock Qrevo Curv</strong></p><p>A robot vacuum and mop that delivers superb suction and great wet floor cleaning. It's the best robovac we've tested to date.</p><p><strong>See our full </strong><a href="https://www.techradar.com/home/robot-vacuums/roborock-qrevo-curv-review" data-dimension112="18fec5f1-9a38-4e3c-9218-5de4f03a7f33" data-action="Deal Block" data-label="See our full Roborock Qrevo Curv review" data-dimension48="See our full Roborock Qrevo Curv review" data-dimension25=""><strong>Roborock Qrevo Curv review</strong></a></p></div><h3 class="article-body__section" id="section-how-i-tested-the-shark-powerdetect-uv-reveal"><span>How I tested the Shark PowerDetect UV Reveal</span></h3><p>I tested the Shark PowerDetect UV Reveal for two weeks in my home, completing my standardised pickup, edge cleaning and mopping tests in addition to simulating tests for features like UV detection. I used the app, making a map of my home and testing various features like scheduling and room-by-room cleaning tasks, closely observing the vacuum when in use to note any navigation or performance issues during testing. </p><ul><li><a href="https://www.techradar.com/news/how-we-test"><u>Read TechRadar’s reviews guarantee</u></a></li><li><em>First reviewed June 2026</em></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>