Error message

  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /home/cay45lq1/public_html/includes/common.inc).
  • Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in menu_set_active_trail() (line 2405 of /home/cay45lq1/public_html/includes/menu.inc).

Reviews

New forum topics

Samsung Galaxy S26 FE review: false economy

TechRadar Reviews - Thu, 09/24/2026 - 15:07
Samsung Galaxy S26 FE: Two-minute review

Picking the Samsung Galaxy S26 FE to be your next phone would be a good decision. But whether it’s the best decision is the chewier question.

As has been the case for the past several years, Samsung has launched one final version of its Galaxy S flagship phones just before summer is out (in the US and UK, at least). This “Fan Edition” device aims to provide a more streamlined experience, focused on camera capabilities and AI, at a more approachable price.

However, Samsung has this all backwards. The Galaxy S26 FE’s cameras range from OK to weak, and the AI tools will soon be available on older models. Plus, the price hike this year makes the phone a little less of a bargain.

Arguably, the real reasons you’ll want a Galaxy S26 FE are its big screen, fast charging, strong battery life, and surprisingly good gaming performance. But then, if those are your priorities, you may still be better off looking elsewhere.

Confused yet? Hopefully the rest of my Galaxy S26 FE review will clear things up.

Samsung Galaxy S26 FE review: Price and availability
  • Starts at $699 /£699 / AU$1,149

The Galaxy S26 FE first went on sale on September 4, 2026. It costs $699 / £699 / AU$1,149 for the standard version, which is $50 / £50 / AU$50 more than the Galaxy S25 FE cost when it launched.

As a result, it means there’s a $200 / £180 / AU$400 difference between this phone and the cheapest full-fat Samsung Galaxy S26, or a $400 / £400 / AU$700 gap if you compare it to the similarly-sized Galaxy S26 Plus. However, those Galaxy S26 models have twice as much storage as the S26 FE by default, which makes direct comparison a little complicated.

Also, keep in mind that you get six free months of Google AI Pro (worth about $120 / £114 / AU$200 at current subscription prices) with the purchase of the S26 FE. It’s an offer worth taking advantage of for the 5TB of cloud storage capacity alone, let alone the extra Gemini powers.

Samsung Galaxy S26 FE pricing

US price

UK price

AU price

128GB

$699

£699

AU$1,149

256GB

$799

£799

AU$1,299

512GB

Not available

£949

AU$1,599

  • Value score: 3.5 / 5
Samsung Galaxy S26 FE review: Specs

Before we continue, here’s a rundown of the Galaxy S26 FE’s hardware.

Dimensions:

161.6 x 76.9 x 7.4mm

Weight:

193g

Display:

6.7-inch FHD+   Dynamic AMOLED 2X

Resolution:

1080 x 2340

Refresh rate:

60/120Hz

Peak brightness:

1,900 nits

CPU:

Exynos 2500

RAM:

8GB

Storage:

128GB / 256GB / 512GB

OS:

Android 17 with One UI 9, 7 years of updates

Cameras:

50MP wide (f/1.8), 12MP ultra-wide (f/2.2), 8MP 3x telephoto (f/2.4)

Selfie Camera:

12MP front camera (f/2.2)

Battery:

4,900mAh

Charging:

45W wired, 15W wireless

Colors:

Blueberry, Graphite, Pistachio

Samsung Galaxy S26 FE review: Design

(Image credit: Richard Priday / TechRadar)
  • No major updates from previous model other than new colors
  • Worthy of the Galaxy S name in terms of looks and durability

Looks-wise, there are no major body changes between the Galaxy S26 FE and the S25 FE — not that Samsung really needed to make any.

You still have three camera lenses embedded directly into the back of the phone, then flat rails with rounded corners around the sides, leading to a big display with a single centered selfie camera on the front.

Unless you’re able to tell the S26 FE apart from a regular S26 by the color of the handset, the big telltales that you’re holding an FE are the shiny back panel, instead of a matte texture, and the larger chin bezel under the display.

(Image credit: Richard Priday / TechRadar)

Speaking of colors, Samsung’s three offerings are Graphite, Blueberry and Pistachio (pictured). The gray option will satisfy anyone who isn’t fussed about the color of their phone, or who knows they’ll be using a case to add some style to their new handset, but I do like both the blue and pale green options for the balance they strike between boldness and subtlety.

Like the other Galaxy S26 models, the S26 FE is rated IP68 for water/dust-resistance, which we expect from any flagship phone launching today. However, it uses Gorilla Glass Victus Plus on both sides to protect against scratches and smashes, which is a generation behind what you get on the S26 or S26 Plus.

  • Design score: 4 / 5
Samsung Galaxy S26 FE review: Display

(Image credit: Richard Priday / TechRadar)
  • Big and colorful, but lower-spec resolution and brightness
  • Larger bezels than other Galaxy S phones

The 6.7-inch AMOLED display of the Galaxy S26 FE matches the size of the Galaxy S26 Plus’ display, but that’s where the similarities end. The FE’s panel only reaches an FHD resolution, rather than the Plus’ more detailed QHD, and peaks at 1,900 nits of brightness according to Samsung’s testing, rather than the 2,600-nit rating of the other S26 models.

Even though the S26 FE can’t deliver as much brightness or as many pixels as Samsung’s top-tier displays, the detail and the colors of the FE’s panel are still strong, and the screen remains fairly legible even out in what remains of the summer sun.

The bezels around the Galaxy S26 FE’s display are thicker than they are on the Galaxy S26 Plus or other premium Samsung phones, which is an understandable limitation given the FE’s lower price. It doesn’t interfere with whatever you want to watch on the screen, but it’s a difference you’ll notice if you have used other recent Galaxy S phones.

  • Display score: 3.5 / 5
Samsung Galaxy S26 FE review: Software

(Image credit: Richard Priday / TechRadar)
  • Samsung’s latest OS comes pre-installed
  • Seven more generations of updates have been promised

The Galaxy S26 FE comes pre-installed with OneUI 9, Samsung’s take on Android 17. That actually puts it ahead of the other Galaxy S26 models, which currently can only access OneUI 9 as a beta version.

OneUI 9 gives the FE a lot of tools to play with. My FanCam — the video subject tracking tool which just debuted on the much more expensive Galaxy Z Fold 8/ Galaxy Flip 8 series — is here and works just as capably. That’s joined by other AI-powered editing features like Photo Assist and Audio Eraser.

(Image credit: Richard Priday / TechRadar)

Meanwhile, for productivity, you have Now Brief and its new custom cards option to give you even more personalized updates all in one place, more supported apps for Now Nudge, plus expanded cross-app functions and Gemini.

Perhaps most importantly for the Galaxy S26 FE, it comes with Samsung’s full seven generations of Android and seven years of security updates promise. That’s the same as other Galaxy S models, and one additional year over what the cheaper Galaxy A57 gets, which is crucial for the value proposition of the S26 FE.

  • Software score: 4 / 5
Samsung Galaxy S26 FE review: Cameras

(Image credit: Richard Priday / TechRadar)
  • Minor upgrades but identical sensors to previous model
  • The main and selfie cameras are good, but the ultra-wide and telephoto cameras lag behind

The Galaxy S26 FE’s camera loadout has a 50MP main rear lens as its centerpiece. You also have 12MP ultra-wide and 8MP 3x telephoto cameras on the back, as well as a 12MP selfie camera embedded in the display. This is the same basic setup as the Galaxy S25 FE, and also what you'll find on the Galaxy S26 and Galaxy S26 Plus, except that the more expensive phones get a higher-resolution 10MP zoom camera instead.

Richard Priday / TechRadarRichard Priday / TechRadarRichard Priday / TechRadarRichard Priday / TechRadarRichard Priday / TechRadarRichard Priday / TechRadar

Our first example is a main camera shot of some brightly colored buildings in London’s Soho neighborhood. It’s a tricky one for any camera to balance due to the shaded shopfronts on the left side and the sky and brightly lit building in the center and right side. The Galaxy S26 FE still has some detail to offer in the shadowed brickwork, but Samsung’s strength in bright colors is on full display on the other half of this particular image.

Keeping with the main camera but looking out at the London Eye at night, we see another strong attempt from the Galaxy S26 FE. There’s some softness in the details, but the balance of colors between the lights and the night sky still makes for an appealing shot.

Looking across a sun-scorched park with the ultra-wide camera, we see a shot with plenty of scenery in it, with little to no distortion at the edges. The brightness and colors could use work, though, as even accounting for the patchy grass and overcast sky, things look overly drab.

The two shots of the church bell tower, one at 2x magnification using the S26 FE’s main camera and the other using the 3x telephoto camera, reveal how best to zoom in with this phone’s particular cameras. The in-sensor 2x zoom still keeps the subtleties of the colors and markings within the brickwork and foliage of the shot, thanks to the 50MP main sensor having plenty of pixels to spare even when zoomed in. However, while the telephoto camera has greater reach, the resulting image is darker and flatter, as you might expect from the lower-resolution sensor. It’s more of a trade-off than I’d like to see on a flagship phone’s zoom camera.

I’m normally a fan of Samsung selfies, but I’m not sure I like how the highlights are exposed in this particular shot. Samsung’s excellent portrait algorithm has applied the perfect level of bokeh to this image, however, cutting around my head, and especially my glasses, accurately and applying a gentle blur to the leaves behind.

Having gone through these samples, you’ll see that the Galaxy S26 FE’s photography potential is reasonable, at least for what are arguably the two most important cameras. For future generations of S FE, though, Samsung could do with upping its game if it wants to continue claiming this is a flagship product.

  • Camera score: 3 / 5
Samsung Galaxy S26 FE review: Performance

(Image credit: Richard Priday / TechRadar)
  • The Exynos 2500 chip is a good performer, especially for graphics
  • 8GB of RAM is limiting for a premium phone in 2026

Here’s an area where I was pleasantly surprised by the Galaxy S26 FE. Samsung’s own Exynos 2500 chipset sits inside the S26 FE, rather than the Snapdragon 8 Elite Gen 5 chip that basically all the other top Samsungs of 2026 are using. But that hasn’t stopped the S26 FE from turning in some decent scores.

As the table below reveals, the Exynos 2500 lags behind slightly in CPU single-core results, but is on par with or ahead of the pack on the rest of the tests. It’s a long way out in front on the Solar Bay benchmark, no doubt thanks to the Exynos’ GPU, which is well-suited to the ray-tracing graphics that this test focuses on.

Samsung Galaxy S26 FE benchmark scores

Samsung Galaxy S26 FE

Geekbench 6 single-core

2,361

Geekbench 6 multi-core

7,831

3DMark Wild Life Extreme Stress Test best

5,116

3DMark Wild Life Extreme Stress Test low

3,456

3DMark Solar Bay

10,526

Bearing only 8GB of RAM compared to the 12GB in other premium Samsung phones, the Galaxy S26 FE does struggle with multitasking or intensive apps. While you can still game on this phone happily, it’s not a handset you’ll want to do anything more practical on than standard browsing and messaging.

  • Performance score: 4 / 5
Samsung Galaxy S26 FE review: Battery

(Image credit: Richard Priday / TechRadar)
  • The same battery/charging hardware as the more expensive S26 Plus
  • Battery life day-to-day is good, while charging is plenty fast enough

Samsung offers the same 4,900mAh battery capacity in the Galaxy S26 FE as it does in the Galaxy S26 Plus. However, according to Samsung’s official battery estimates, the S26 FE doesn’t offer the same battery life, managing 29 hours of video playback compared to the S26 Plus’ 31 hours or the S26’s 30 hours.

For me, I used about 40% of the phone’s battery during a typical day’s use. This included some work, some photography, and some social media scrolling and video watching. The Galaxy S26 FE could definitely survive two days of regular use before needing to charge, as you would hope from a phone with this size of battery.

The Galaxy S26 FE is still equipped for 45W wired charging and 15W wireless charging. That’s the same wired speed as the S26 Plus and Ultra, but the wireless charging is slower, since the FE is not Qi2 compatible.

Using a 45W charger, Samsung estimates a 69% refill for the S26 FE in half an hour. In my own test, I found the S26 FE managed to fill to 43% in 15 minutes and to 100% in 58 minutes. Considering the battery life this phone can manage, a complete refuel in under an hour and getting over two-fifths full in a quarter-hour isn’t bad at all, even if faster options are out there.

  • Battery score: 4 / 5
Should you buy the Samsung Galaxy S26 FE?Samsung Galaxy S26 FE scorecard

Attributes

Notes

Rating

Value

The cheapest Galaxy S26 model, although not by much post-price hike.

3.5/5

Design

Looks like any other Galaxy S26, except with some fun, unique colors and slightly less durable materials.

4/5

Display

Big and colorful, but lacking detail.

3.5/5

Software

Samsung’s best features come pre-installed, but will soon be available on older phones too.

4/5

Camera

The main and selfie cameras produce strong photos, but the phone’s let down by its ultra-wide and telephoto lenses.

3/5

Performance

A below average RAM capacity is understandable for the price, and the phone still plays games really well.

4/5

Battery

Less efficient than other S26 models, but still long-lasting and fairly fast-charging.

4/5

Buy it if…

You want the big premium Samsung experience for the smallest possible price
The Galaxy S26 FE is the cheapest Galaxy S26, and joint second largest. If you want a big display and long battery life from Samsung for less, then this is the model for you.

Exclusive software and AI features don’t interest you
You do get some excellent tools and toys to play with within One UI 9, but since this update will come to older Samsungs soon enough, this isn’t a phone to buy for this reason alone.

Your performance needs are about average
If you like to play games on your phone, or know you’ll spend long days away from a charger, the S26 FE will suit you well. It doesn’t offer the very best in either power or battery life, but arguably it’s a case of diminishing returns if you spend any more than this.

Don’t buy it if…

You care about photography
Taking snaps with the main and selfie cameras on the S26 FE is easy and results in great photos. But if you want more detail or know you like taking ultra-wide or zoom shots, there are many other phones that will suit you better.

You want the best long-term value
While the S26 FE is cheaper to buy right now, we’d recommend looking at one of Samsung’s more expensive S26 models, or those of another Android brand, if you’re hoping to get as many happy years out of your new phone as possible.

If you’re willing to spend even a few dollars/pounds more
The Galaxy S26 FE sits just below the starting price of typical flagship phones. That means you could save yourself 100 bucks or so, or you can spend the extra and unlock the next tier of hardware and features that could provide far more value to you.

Samsung Galaxy S26 FE review: Also consider

Samsung Galaxy S26 Plus

It’s quite a bit more expensive, but as an investment, it may be worth spending the extra money over the Galaxy S26 FE’s price to secure a phone that outperforms it on every important metric.

Read our full Samsung Galaxy S26 Plus review

Samsung Galaxy S26

Costing only two hundred bucks more than the S26 FE, the standard S26 gives you the premium Samsung experience at the best possible price, even if the display is quite a bit smaller.

Read our full Samsung Galaxy S26 review

Samsung Galaxy S26 FE

Samsung Galaxy S26 Plus

Samsung Galaxy S26

Price (at launch):

$699 / £699 / AU$1,149

$1,099 / £1,099 / AU$1,849

$899 / £879 / AU$1,349

Dimensions:

161.6 x 76.9 x 7.4mm

158.4 x 75.8 x 7.3mm

149.6 x 71.7 x 7.2mm

Weight:

193g

190g

167g

Display:

6.7-inch  Dynamic AMOLED 2X

6.7-inch Dyanmic AMOLED 2X

6.3-inch Dynamic AMOLED 2x

Resolution:

1080 x 2340

3,120 x 1,440

2340 x 1080

Refresh rate:

60/120Hz

120 Hz adaptive

120 Hz adaptive

Peak brightness:

1,900 nits

2,600 nits

2,600 nits

Processor:

Exynos 2500

Qualcomm Snapdragon 8 Elite Gen 5 for Galaxy

Qualcomm Snapdragon 8 Elite Gen 5 for Galaxy

RAM:

8GB

12GB

12GB

Storage:

128GB / 256GB / 512GB

256GB, 512GB

256GB, 512GB

OS:

Android 17 with One UI 9, 7 years of updates

Android 16 with One UI 8.5, 7 years of updates

Android 16 with One UI 8.5, 7 years of updates

Cameras:

50MP wide (f/1.8), 12MP ultra-wide (f/2.2), 8MP 3x telephoto (f/2.4)

50MP main (f/1.8), 12MP ultra-wide (f/2.2), 10MP telephoto with 3x optical zoom (f/2.4)

50MP main (f/1.8), 12MP ultra-wide (f/2.2), 10MP telephoto with 3x optical zoom (f/2.4)

Selfie cameras:

12MP front camera (f/2.2)

12MP (f/2.2)

12MP (f/2.2)

Battery:

4,900 mAh

4,900 mAh

4,300mAh

Charging:

45W wired, 15W wireless

45W wired, 15W wireless

25W wired, 15W wireless

Colors:

Blueberry, Graphite, Pistachio

Cobalt Violet, Sky Blue, White, Black, Silver Shadow, Pink Gold

Cobalt Violet, Sky Blue, White, Black, Silver Shadow, Pink Gold

How I tested the Samsung Galaxy S26 FEWhy you can trust TechRadar

☑️ 100s of smartphones reviewed
☑️ 15 years of product testing
☑️ Over 16,000 products reviewed in total
☑️ Nearly 200,000 hours testing tech

I reviewed the Samsung Galaxy S26 FE over the course of two weeks as a work phone, using it for writing stories, answering emails and messages, watching video and playing games. I did this both at home and on the move with a SIM card installed.

Specific tests included running Geekbench 6 CPU benchmarks and 3DMark graphics benchmarks, a charging speed test using a compatible third-party charger, the taking of hundreds of photos across all of the S26 FE’s cameras to test image quality, and the careful monitoring of battery drain during use to figure out how reasonable the manufacturer’s battery life promises are.

Read more about how we test

First reviewed: September 2026

Categories: Reviews

The Huawei Watch D3 is an improvement on the D2, but I’m still left wanting more

TechRadar Reviews - Wed, 09/23/2026 - 09:02
Huawei Watch D3: One minute review

It’s been two years since the release of the Huawei Watch D2, and the Chinese brand has decided it’s time to offer an upgraded model, aptly named the D3. With the D range, Huawei was the first to introduce blood pressure monitoring capabilities in a smartwatch, providing a simple way to track the important health metric without needing a dedicated monitor.

In my Huawei Watch D2 review I gave the smartwatch an impressive 4.5 stars. I had high praise for the blood pressure monitoring and clever strap but was left underwhelmed by the bulky design, high price tag, and lack of smartwatch features. Huawei has gone some way to address these concerns, but not universally and in some ways not enough. As a result, the D3 isn’t yet one of the best smartwatches around, but as a medical-first device, it approaches and blends the lifestyle and medical aspects well.

The D3 is primarily a medical device rather than one of the best fitness trackers or running watches. That’s evidenced by its CE-MDR certification that is proudly presented on the watch’s product page. Its commitment to medical reporting means that at times Huawei is forced to prioritize function over form. This is the case with the blood pressure monitoring.

(Image credit: Future / Paul Hatton)

To be able to offer ambulatory blood pressure monitoring, the D3 has to feature a mechanical airbag and pressure sensor. This is attached to the inside of the strap, and even though Huawei has narrowed the thickness of the airbag compared to the D2, it still lacks the comfort of most other smartwatches that don’t have this onboard hardware.

In testing I didn’t have time to compare the D3 against a dedicated blood pressure cuff, but I was able to check it was in the same range as my expectations. The watch takes less than a minute to carry out the check, and all you have to do is place the watch at the same height as your heart and remain still.

Because single measurements are insufficient to determine trends, I used the auto-reminder feature to alert me so I didn’t forget to capture regular measurements. After doing this for several days, I was able to see how my blood pressure changed depending on the time of day and what my average performance was. In addition to this, it’s possible to easily generate a report to share with your GP from within the Huawei Health app.

(Image credit: Future / Paul Hatton)

Blood pressure monitoring is the D3’s magic trick, but the watch offers other health tracking, including pulse wave arrhythmia analysis and beat-by-beat ECG. During testing, I experienced repeated poor signal issues with the ECG measurements, but the arrhythmia analysis worked perfectly.

While I was working through the health metrics, I strapped on a dedicated heart rate monitor so I could carry out an independent comparison. Both devices reported identical rates, although the D3 was slightly slower to adjust to changes. Finding each health metric is simple and straightforward thanks to the rotating crown control, and the interface clearly guides you through the required steps to perform each one.

Huawei has worked hard to reduce the bulk of the watch, stripping off 2mm from the watch thickness and bringing it down to just 11.3mm. That’s pretty impressive, but unfortunately this measurement doesn’t take into consideration the sensor, which protrudes out the bottom, and despite its smooth surface, feels a little uncomfortable on the wrist.

(Image credit: Future / Paul Hatton)

The watch features an enlarged 1.92-inch AMOLED display with 3000 nits of peak brightness. It is colorful, vibrant, and looks fantastic, offering the same excellent visibility when used both inside and out. Unfortunately, there’s still a significant black strip between the edge of the display and the surrounding case, which results in a lot of dead space. An edge-to-edge display would look far better.

The D3 prioritizes medical reporting, but it also offers over 100 workout modes and a generous range of smart features, including notifications, Bluetooth calling, NFC payments, and voice note recording. These elevate the usefulness of the watch and make it a handy companion for everyday life.

I said earlier that I had an issue with the price of the D2, and Huawei has done nothing to make the D3 more affordable. In fact, it’s £50 more than its predecessor was at launch. The only thing that softens the blow is that if you purchase the watch before September 22, 2027, then you’ll get 10 months of Bupa Well+ health services.

It’s hard to get away from the fact that the D3 is focused on a very niche market. If you’re concerned about your blood pressure or would simply like to keep an eye on it, then the D3 is the perfect solution. The trade-off is a watch that is bulkier and slightly more uncomfortable than most other smartwatches of this size, but we have to give the D3 credit: when even Apple Watches are focused on hypertension detection via LEDs, Huawei continues to back its unique cuff-based solution.

(Image credit: Future / Paul Hatton)Huawei Watch D3: Specifications

Component

Huawei Watch D3

Price

£399

Dimensions

46.5 × 41mm and 11.3mm thick

Weight

40g without strap

Case/bezel

Aluminium alloy

Display

1.92 inch AMOLED (408 × 480 pixels, PPI 328)

GPS

No

Battery life

1 day with the ABPM feature enabled or 6 days without

Connection

Bluetooth and NFC

Water resistance

No

Huawei Watch D3: Scorecard

Category

Comment

Score

Value

A mid-range smartwatch where you’re paying for the advanced blood pressure monitoring feature.

4/5

Design

A modern, good-looking smartwatch that is only let down by its bulk.

4/5

Features

Capable of recording an impressive set of medical-related metrics with workout modes and smart features to boot.

4/5

Performance

Reliably accurate results with blood pressure recordings within my expected range. Heart rate measurements were spot on.

4/5

(Image credit: Future / Paul Hatton)Huawei Watch D3: Should I buy?Buy it if...

You need a convenient way to track your blood pressure at home

It takes just one minute per test, and the app generates an exportable report that you can take to your GP.

You’re interested in more medical-related metrics

With pulse wave arrhythmia analysis and beat-by-beat ECG, the Huawei D3 offers more than most watches in this area.

Don't buy it if...

You have no interest in blood pressure monitoring

There are better smartwatches at this price point that offer a more well-rounded smartwatch experience.

You want a fitness tracker

If you’re a fitness enthusiast or runner, then a dedicated watch for these purposes will serve you better.

Also consider

Huawei Band 11 Pro

A better all-round fitness tracker that’s significantly more affordable. It also offers some medical measurements, including arrhythmia analysis and sleep apnea monitoring, but no blood pressure.

Read our Huawei Band 11 Pro reviewView Deal

Apple Watch Series 11

Apple Watches feature a 'hypertension detection' feature, that can indicate trends over 30 days, but not instant blood pressure readings like Huawei's cuff.

Read our Apple Watch Series 11 reviewView Deal

How I tested the Huawei Watch D3

I wore the D3 for 72 hours, and during this time I performed every medical test that the watch offers. Despite not having time to compare the blood pressure results to a dedicated monitor, I was able to compare the heart rate readings to a heart rate monitor. I also used the D3 to keep on top of my notifications, check the weather, and record some voice notifications.

First reviewed: September 2026

Categories: Reviews

​​​​The Eufy Omni E35 boasts huge suction power, good mopping performance, and self-cleaning

TechRadar Reviews - Wed, 09/23/2026 - 03:00
Eufy Omni E35: two-minute review

The Eufy Omni E35 is a near-perfect robot vacuum cleaner 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.

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.

(Image credit: Future)

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.

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.

Eufy Omni E35: price and availability
  • List price: $1,299.99 / £999 (about AU$1,830)
  • Launched: September 2026

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.

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.

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.

Announced at the IFA technology trade show in September 2026, the Eufy Omni E35 is available now.

  • Value for money score: 4 out of 5
Eufy Omni E35: specifications

Feature

Specification

Max suction

35,000 Pa

Robot diameter

14.2 in (360 mm)

Robot height

4.6 in (116 mm)

Dock dimensions

14.6 x 17.6 x 16.2 in / 270 x 447 x 411 mm

Dust bin volume (base)

2.5 liters

Water tank volume (base)

2.5 liters clean / 2.4 liters dirty

Base type

Charging self-emptying, refilling, hot-water mop washing, hot-water drying

Max threshold clearance

1.2 in (30 mm)

Mop type

Self-cleaning roller

Mop pad lifting

Automatic on carpet

Max runtime

180 minutes

Eufy Omni E35: design
  • Charge station with dusty bag, water tanks, mop cleaning and drying function
  • Self-cleaning roller mop with edge-cleaning design
  • Dual detangling brushes

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.

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.

FutureFutureFutureFutureFuture

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.

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.

FutureFutureFutureFuture

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.

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.

  • Design score: 4.5 out of 5
Eufy Omni E35: performance
  • Excellent vacuuming
  • Very good mopping
  • Fully cleans and dries itself reliably

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.

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.

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.

@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;}}{"@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": []}BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();

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.

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.

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?

@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;}}{"@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": []}BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();

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.

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.

@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;}}{"@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": []}BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();

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.

(While talking about noise levels, I recorded the dust bin emptying process at 85 dB from about two feet away.)

@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;}}{"@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": []}BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();

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.

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.

@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;}}{"@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": []}BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();

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.

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.

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.

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.

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.

(Image credit: Future)

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.

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.

  • Performance score: 4.5 out of 5
Eufy Omni E35: app
  • Straightforward mapping
  • Good use of shortcuts
  • Lacks a mop-only mode

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.

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.

It’s also possible to create a home screen widget, where a single tap fires up the E35 and sets it to work.

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.

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.

  • App score: 4.5 out of 5
Should you buy the Eufy Omni E35?Eufy Omni E35 score card

Attribute

Notes

Score

Value

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.

4.5

Design

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.

4.5/5

Performance

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.

4.5/5

App

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.

4.5/5

Buy it if

You want a hands-off robovac

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.

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.

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.

You don’t need the flagship

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.

You value mopping as much as vacuuming

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.

Don't buy it if

You’re on a budget

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.

You have large doorway thresholds or thick rugs

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.

How I tested the Eufy Omni E35@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;}}{"@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": []}Hard floor cleaning test

Vacuuming oats from hard floor using Eufy Omni E35

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();@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;}}{"@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": []}Hard floor cleaning test

Vacuuming crumbs from hard floor using Eufy Omni E35

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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);}})();
Categories: Reviews

Bambu Lab R1 laser cutter and engraver review

TechRadar Reviews - Tue, 09/22/2026 - 11:55

The R1 isn’t Bambu Lab's first venture into laser engraving; of course, we first saw the small-capacity engraver in the H2D, which enabled, with the cutter and 3D printer, a full range of manufacturing tools in one not-so-small machine. The R1 is something altogether more serious and much closer to machines such as the xTool P2 that I've previously tested.

It's also an important machine for Bambu Lab and shows them expanding further into the growing maker space. The R1 is the company's first dedicated product outside 3D printing and is based around a 55W CO2 laser rather than a diode; the H2D utilised diode lasers. Using CO2 rather than diode laser technology lets the machine work with a wider range of materials, most notably clear acrylic and glass, while also providing considerably more cutting power; most diodes currently top out at 40W, although several far more powerful heads exist.

However, as with Bambu Lab’s entrance into the 3D print market, the machine technology and market aren’t new, and plenty of other players already exist. xTool, LaserPecker, Glowforge and Creality have already demonstrated how far enclosed desktop laser cutters have progressed in recent years. Five years ago, many of the smaller laser engravers I looked at were open-frame machines that required assembly and considerably more caution, to the point where I will no longer cover them. These days, fully enclosed machines are really where the technology is at, and there are some great options at very reasonable prices.

While there are plenty of machines in the sector, this is Bambu Lab, and with their first laser, they also bring much of the knowledge of 3D printing with them, along with their own approach to automation.

The R1 handles focusing, material positioning and optical alignment, with cameras, lasers and encoders helping the machine understand where the material is and where the toolhead is moving. On paper, this looks great because it will speed up workflows; however, it was only during testing that I realised what a difference it can make.

I've been using the R1 for around three weeks, mostly cutting 3mm basswood ply and acrylic, but also testing MDF, leather, paper, ceramic, glass, coated metal, and plenty of irregular wooden objects. What I have found during that time is that the hardware is exceptionally polished, and while Bambu Suite is good, it still has some catching up to do to realise its and the machine's full potential.

(Image credit: Alastair Jennings)Bambu Lab R1: Price & availability

The Bambu Lab R1 launches at $2,499 in the US direct from the company site and £2,249 from the UK site. Pre-orders start on September 22, 2026 and shipping scheduled to begin in October.

The short-focus lens is included. The Riser Base, Conveyor, Rotary attachment, medium- and long-focus lenses, Vision Encoder, E1 Pro Air Purifier and Auto Fire Extinguishing System are optional extras.

Bambu Lab R1: DesignSpecs

Laser technology: 55W CO2
Working area: 600 x 300mm
Working area with Conveyor: 600 x 3000mm
Maximum speed: 1,000mm/s
Maximum acceleration: 20,000mm/s²
Positioning accuracy: < 0.2 mm
Absolute motion accuracy: < 0.1 mm across 600mm with Vision Encoder
Dimensions: 940 x 560 x 200mm
Weight: 33.5kg
Maximum input power: 780W
Software: Bambu Suite
Supported OS: Windows, macOS
Connectivity: Dual-band Wi-Fi, USB
Laser safety: Class 1 in standard enclosed configuration
Short-focus spot: 0.11mm
Medium-focus spot: 0.17mm
Long-focus spot: 0.19mm
Maximum cutting capacity: 18mm black walnut with medium/long-focus lens; 20mm acrylic.
Standard lens: Short-focus
Supported cutting/engraving materials: Wood, acrylic including clear acrylic, leather, fabric, paper, EVA foam and shell
Engraving materials: Glass, ceramic and coated metal
Optional accessories: Riser Base, Conveyor, Rotary, medium/long-focus lenses, Vision Encoder, E1 Pro Air Purifier and Auto Fire Extinguishing System.

Unpacking the box, and having already checked the specifications before the machine arrived, I was surprised the packaging was smaller than expected. It still required two of us to manoeuvre the box into the workshop, but once unpacked and at 33.5 kg, I could lift and position it with little issue. It’s still heavy, but looking at the slight curve that’s left in the desk from the previous test, it's not quite as heavy as the previous 3D printer that took up the space.

The weight and, for that matter, the size are actually very manageable, and with a footprint of 940 x 560mm, the machine was able to sit on the standard section of the 60cm-deep workshop bench. While the main machine sits quite happily in that space, you’ll also need to consider venting and leave enough vertical clearance to open the lid.

Once in position, the R1's design is unmistakably Bambu Lab. The finish is superb; everything feels properly manufactured rather than assembled from off-the-shelf laser components, and I was pleased to see the machine arrived largely configured; I just had a few small setup procedures to follow before I could start.

As with all engravers, the first job was to attach the exhaust to the filter, and in my setup this was paired with the optional E1 Pro filtration system. You also need to fill the cooling reservoir with distilled or de-ionised water.

The instructions suggest adding antifreeze if you live in a colder climate. My workshop can drop below 5°C during winter, so I filled the system to the -10°C protection mark. Once I removed the transport restraints and checked the interior, the R1 was ready to power on.

The initial startup takes roughly 30 seconds before calibration begins. The automated self-check and initial calibration took around half an hour. Once that completes, you can then run the laser alignment procedure, and this is the first sign that this laser is something a little different.

Unlike the more manual approach of other CO2 lasers, here all you need to do to calibrate is to lift the small cover on the toolhead, then attach the supplied Laser Alignment Sensor, which clicks into place magnetically. Select the alignment function from the touchscreen, and the R1 handles the rest. The complete process took me approximately five minutes, including fitting and removing the sensor.

That's longer than Bambu's roughly one-minute claim for the alignment operation itself, but from my perspective there was virtually nothing to do. Then inside, there are a few removable slats that help to support the material that is placed within.

These are all easy to reposition, but again I would have liked more of them, although there are a few more than when I looked inside the LaserPecker LX2 in my recent review. The main issue is that small cut pieces can fall between the gaps, and for detailed work I still prefer a proper honeycomb bed, which I used for most of the review.

Around the machine, things are similarly clean. The exhaust and main power connection are at the rear, while Air Assist is integrated. Accessory connections sit on the side, alongside USB, and an easily accessible emergency stop is included. Unusually for a laser engraver, it has a small touchscreen, which is extremely useful. Most laser cutters force almost every operation back through the computer. Having direct access to machine functions makes the R1 much easier to use.

(Image credit: Alastair Jennings)Bambu Lab R1: Features

A look through the specifications, and the first thing to note is that this is a 55W CO2 laser; at present, there are only a few CO2 laser engravers at this price aimed at the enthusiast and small-business sector, and the only real competition is the xTool P2.

Inside is a very decent 600 x 300mm working area, which, from my testing, is large enough for most projects; if you need to go larger, there is an optional conveyor. Based on my testing of the base unit alone, I found I could place two standard 300 x 300mm basswood sheets side by side, which was useful when cutting multi-part models, such as the flower box and an RC boat I’m partway through. If you need longer than 300mm, the Conveyor enables working lengths of up to 3000mm, but you are still limited to the 600mm width.

After reviewing all the information, Bambu Lab is keen to highlight the Auto Laser Alignment. This is because, in the past, this process has been very hands-on with other machines, as a CO2 laser relies on mirrors to direct the beam through the machine, and those mirrors need to remain aligned.

On most machines, these mirrors are pre-calibrated, but they do occasionally need recalibration, which can be time-consuming; here, however, that process is fully automated with motorised mirror actuators and an alignment sensor.

For design placement accuracy on materials and tight measurements, the machine uses a TriSense system. This combines the BirdsEye Camera, Toolhead Camera, Pinpoint Laser, distance-measurement laser, and XY encoders to locate material, measure its surface, and monitor movement.

During testing, I accidentally put this to the test when I made an error importing a cutting design and left the paths set as lines rather than cuts. I ran the job, removed the basswood from the machine and only then realised the mistake. Normally, that could easily mean starting again.

Instead, I put the sheet back into the R1, used the camera view to align the cutting paths with the lines already engraved into the material, changed the operation to Cut and reran it. The cuts followed the previous lines accurately, with no obvious signs of the mistake.

When it came to small objects, the positioning was equally impressive. I placed pre-cut objects such as placemats around the work area, positioned the artwork through Bambu Suite, and achieved results very close to what I had on screen.

(Image credit: Alastair Jennings)

Alongside the hardware is the Bambu Suite software, which offers plenty of functionality, and I found it to have good overall stability when working on macOS, but the workflow isn't yet as fluid as the hardware deserves.

Importing a DXF, for example, involves selecting Open Image, when Open File would make considerably more sense. Once you import a design, you can assign Cut, Line, and Fill operations. Then you move into Prepare, where you set up the machine and material.

This separation isn't always convenient. If you realise you've assigned the wrong operation later, changing it isn't as immediate as right-clicking the object in the earlier screen.

Capturing the work area also requires you to enter the preparation workflow. During testing, I occasionally found the workspace remained blank until I selected Measure and ran through the capture procedure again. On the Mac version, I also occasionally saw a ghost of the previously captured image underneath the current one. However, none of this stopped me from working.

After a couple of days, the workflow logic did make sense, and after three weeks I could move through jobs quickly, although I still didn’t feel that the workflow was as fluid as it could have been. Material profiles cover most common materials, while manual control gives you plenty of flexibility when experimenting with less conventional materials and objects.

Bambu Lab R1: Performance

I started the test with the setup process, and while this was straightforward, there was a little to-and-fro with attaching vents and making sure the filter vent was routed outside. I then had to fill the machine with distilled water and antifreeze before running through the calibration processes, which all took around an hour.

Starting the tests, I focused on using 3mm basswood ply; this is for a couple of reasons: it's a common material used by crafters, model makers, and many small businesses. Second, I’m familiar with how it reacts under lasers and the initial results I should expect. As I started the process, the Bambu Lab philosophy that I’ve seen with their 3D printers started to become obvious.

One of my standard initial tests is a flower-box project. I imported the design, detached individual components and rearranged them across two 300 x 300mm basswood sheets to make better use of the material. I tried the auto layout, but because I hadn’t regrouped the paths, the design scattered across the work area. Undoing the mistake didn’t work, so I had to reload the design.

Once I’d re-laid out the design over the two sheets, I hit the Make button, and then the main button of the machine the R1 started the process of engraving and cutting, and with decent speed that I seen with other CO2 engravers. The complete model took around 10 minutes to cut across those two sheets, and the result was close to perfect.

However, there was one issue. Once the pieces were cut free, the smaller parts dropped between the support slats, and a couple of scorch marks appeared where they fell into the laser's path. Moving the slats closer helps, but this is where a honeycomb grid should really be used.

After several impressive results in basswood ply, I then produced the same flower-box design in acrylic. This took considerably longer at around 29 minutes, but the finish was exceptional, one of the best results I've achieved with this particular cutting plan in acrylic. The use of this material is one of the reasons that you would want to go for a CO2 laser over a conventional diode laser.

I also pushed the R1 beyond thin sheet material, testing materials ranging from lightweight paper through to 16mm MDF; in the case of these materials I tended to opt for the manual control so that I could get the best possible cut, and I was pleased to see it was possible to save down the settings as presets.

In the engraving tests, I used leather, ceramic, coated metal, and glass. Across those materials, the CO2 source's added power and flexibility became apparent, especially compared with the smaller diode engravers I've used.

(Image credit: Alastair Jennings)

Through the test, the raw cutting power was impressive, and by slowing the engraver down and maxing out the power, I was able to cut through an 18mm sheet of ply. However, the positioning accuracy is what has really impressed me.

For small objects, the position shown in Bambu Suite and the finished engraving were exceptionally good. Once I'd grouped individual elements of a design correctly, the automatic positioning tools made batches of pre-cut objects far easier, although I was equally as impressed by the xTool and Creality machines that I’ve looked at recently in this respect.

Curved-surface engraving, however, was one up from what I have experienced before as it was easy to set up and use. Essentially, I can place something such as a bowl or piece of timber into the R1, select curved-surface machining, and manually check that there's enough clearance for the toolhead.

The machine then measures multiple points across the object to gauge the changing surface height and generates a height map. I could then position the artwork and run the job the same way I would on a flat sheet.

I tried this with curved wooden objects, including a log, and the resulting lines stayed clear and focused as the surface height changed. There is a bit of physical interaction involved. The lid needs to be raised and lowered as the R1 works through parts of the measurement process, and an automated lid would make the experience even slicker.

Bambu Lab R1: Final verdict

(Image credit: Alastair Jennings)

Bambu Lab may be arriving relatively late to the dedicated desktop laser market, but the R1 doesn't feel like a first attempt. After three weeks of use, what stands out isn't just the 55W CO2 laser; it’s that Bambu Lab's formula has been applied, which means it looks great, is easy to use, and produces great cuts and engravings.

The automatic optical alignment seems to do its job and removes some of the more complex maintenance tasks that come with owning a CO2 laser. Then there's the TriSense system that makes positioning objects and designs easy, and the curved-surface measurement procedure just works exceptionally well.

I even felt that the material presets were spot on, enabling me to get excellent results without spending the first afternoon with the machine producing endless power-and-speed test grids. Something I’m all too familiar with.

The physical design is excellent and weight and size means it sits perfectly in the workshop with teh 600 x 300mm work area enabling enough rooom for most of the jobs that I would want to do on this style of machine.

Bambu Suite does, however, need more work. I'd like quicker access to camera capture, a more fluid transition between design and preparation, clearer terminology, and a few interface bugs ironed out. I'd also like more support slats in the actual machine, or preferably a honeycomb bed that was supplied with the machine and not an optional extra.

Also, on the interior, a little more headroom would have been nice, but then you can use a raiser, but that or the use of the conveyor changes the machine from a class 1 to a class 4.

The R1 has been designed to be part of the Bambu Lab ecosystem and is designed for makers who are already invested in Bambu. Putting laser engraving and 3D printing together at scale does provide a solid base for personal manufacturer and it is exciting.

For small businesses, workshops, model makers and serious crafters, this is a fast, accurate and unusually easy to use CO2 machine.

Should you buy the Bambu Lab R1

Value:

Premium price, but with serious production capability

4

Design:

Considering the size of the work area it's relatively compact and exceptionally solid

4.5

Features

Automation brought over from 3D printing makes complicated jobs simple.

5

Performance

Excellent cuts and detail with superb positioning and minimal scorching

5

Total

Exceptional CO2 cutter, software needs some workflow issue resolving.

4.5

Buy it if...

You already 3D print
Pairing the R1 with a Bambu 3D printer creates an exceptionally flexible workshop for combining printed components with wood and acrylic.

Accuracy really matters
Camera positioning, surface measurement and automatic alignment make placing detailed engravings onto pre-cut and curved objects remarkably straightforward and repeatable.View Deal

Don't buy it if...

Space is limited
The R1 is compact for its capacity, but at 33.5kg with extraction and filtration, it still requires a proper workshop setup.

You want simplicity
The hardware is exceptionally polished, but Bambu Suite's current workflow requires some familiarisation and could still benefit from further refinement.View Deal

For more crafting tech, I've tested and reviewed all the best 3D printers and the best laser engravers.

Categories: Reviews

Sonos Ace Ultra review: more musical, more feature-rich, much improved headphones

TechRadar Reviews - Tue, 09/22/2026 - 08:30
Sonos Ace Ultra: two-minute review

Sonos is making a real statement of intent with its new wireless headphones, the Sonos Ace Ultra.

The multi-room master has made a whole host of improvements to this upgraded wireless over-ear model, which has arrived two years after the original Ace came to market. The Sonos Ace Ultra have enhanced custom 40mm drivers, a new headphone engine, better battery life, better noise-cancelling, and more detailed EQ to name a few things. So can they finally compete with flagship rivals from the likes of Sony and Bose to become some of the best noise-cancelling headphones we've tested? Here’s what I think after weeks of testing.

Let’s start by addressing the most important area of all: sound quality. We felt that the original Ace fell short of the best headphones around due to one main issue: their middling musicality. But the Ace Ultra have remedied that, and then some.

When listening to the Sonos Ace Ultra beside the original model, the differences were stark. Where the standard Sonos Ace sounded confined, overstretched, and unrefined, the Ace Ultra offered openness, intricate detailing, and a broader, more organized soundstage. What’s more, they provide better balance across the frequency range, with deep yet controlled bass, rich but less overzealous mids, and tight, articulate treble.

While I still consider some similarly priced competitors, like the Sony WH-1000XM6 and Bowers & Wilkins Px7 S3 to supply slightly more premium, detailed sound (for music, that is), the Ace Ultra are really not far behind. Sonos listened to the critics, and proved that it's up to the task of going toe-to-toe with the titans of the headphone world.

We already loved the original Ace for movies, though, finding that they offered immersive Dolby Atmos audio with effective head-tracking to boot. And that’s much the same on the Ace Ultra. They whip up wonderful width, strong command over height effects, and never neglect the fundamentals like clear dialogue and cinematic, pounding bass.

But what’s new on the Ace Ultra? Although music got a seismic upgrade, other alterations feel a bit more incremental — but that’s by no means a bad thing. Two more microphones have been added to the Ultra, bringing the total to ten, and ANC is great here. Wherever I was, my soundings were subdued to great effect, almost creating a bubble of silence. ANC is adaptive this time around and adjusts nicely, and the transparency mode works a treat. Call quality is strong too, as you may expect.

Battery life has also seen a boost, and you’ll now get up to 35 hours with ANC on. Is this anything groundbreaking? No. But it’s slightly above the 30-hour standard for headphones in this price bracket, and I never felt that I had to charge these cans very regularly. The battery is also replaceable, and a rapid charging mode means you can get three hours of playback if you spend three minutes juicing them up.

EQ options have also been expanded beyond the basic two-band equalizer found on the standard Ace headphones. There’s an eight-band option now as well as adaptive EQ, meaning you can genuinely tailor sound to your specific tastes.

We also need to talk about the Wi-Fi capabilities of the Sonos Ace Ultra. No, we’re still not at the point where we can directly stream tunes over a local internet connection, but there are some nifty features at play. First of all, TV Audio Swap is back, enabling you to link the headphones to a compatible Sonos soundbar, and transfer sound seamlessly. This is highly responsive and effective, and while I didn’t find myself using this feature a ton, you can avoid the latency issues you’d get from connecting headphones to your TV over Bluetooth.

The Ace Ultra also add Headphone Linking, though, which means you can also transfer sound from compatible speakers, like the Sonos Play, for instance. This is equally reliable as TV Audio Swap, and is a great option if you’re listening to music at home but want to keep listening without distracting others.

It’s clear to see that the Sonos Ace Ultra don’t look very different from the previous model, but that’s no bad thing. They’re sleek, well-built, and offer a neat combination of comfort and over-ear security. They’re not fully foldable, and the included case could be better quality-wise, but these are fairly minor pain points in the grand scheme of things.

Considering that the Ace Ultra cost the same as the original Ace at the point of launch — and actually less in the UK — they feel like a much more worthwhile investment. They’re by no means cheap, but their enhancements are meaningful and substantial, making these a great pair of headphones whether you have a pre-existing Sonos system or not. As a result, these are a great pair of headphones for music and movie lovers alike that feel worth the outlay — and are easy to recommend if you want a great all-round pair of premium wireless headphones.

(Image credit: Future)Sonos Ace Ultra review: price & release date
  • Priced at $449 / £399 / AU$699
  • First released September 2026

The Sonos Ace Ultra were released in September 2026, about two years after the original Sonos Ace headphones. The new model is priced at $449 / £399 / AU$699, which is the same as the standard Ace cost at launch in the US and Australia, though they’re actually cheaper in the UK than the original Ace were at the point of release.

Given their price, the Ace Ultra have some extremely hot competition. For example, the Sony WH-1000XM6 are similarly priced, and offer an incredible mix of balanced, dynamic, and impactful sound alongside some of the best noise-cancelling on the market and a giant suite of features. Other competitors include the noise-crushing Bose QuietComfort Ultra Headphones Gen 2, the spacious sounding Bowers & Wilkins Px7 S3, and the ultra-detailed Sennheiser HDB 630.

Sonos Ace Ultra review: specs

Drivers

Next-gen 40mm custom

Active noise cancellation

Yes

Battery life

35 hours (ANC on)

Weight

0.7lbs / 322g

Connectivity

Bluetooth 6.0, USB-C

Frequency range

20Hz-20kHz

(Image credit: Future)Sonos Ace Ultra review: features
  • Excellent ANC with adaptive mode and effective transparency option
  • Higher-res audio available as well as Dolby Atmos for spatial sound
  • TV Audio Swap and Headphone Linking works very well

The Sonos Ace Ultra boast an excellent suite of features and are a highly personalizable, smart set of headphones.

Let’s kick off with ANC, which has had quite the revamp. Now, you can toggle on an adaptive mode, which adjusts for things like fit, whether you’re wearing glasses, and if you make sudden head movements. But that’s not all.

Sonos has also boosted the number of mics for the Ultra, with ten to the original Ace’s eight. The mics can monitor your surroundings and cut out external noise in real time, and they do this to great effect. Yes, the Ace Ultra supply great ANC, and no matter my environment, I was treated to satisfying, distraction-free listening.

When out on walks, the sounds of cars passing by were totally nullified. When typing away in the office, the clacking of keyboards was fully subdued, and when travelling on public transport, engine sounds and surrounding chatter were put right to the sword. The Aware Mode is also very effective, and makes it incredibly easy to tune into your surroundings, with the new Voice Boost mode able to improve the clarity of voices around you if you toggle it on.

The upgraded microphone system also helps the Ace Ultra to handle phone calls with greater care than ever before. When taking calls when out and about, my speech was perfectly comprehensible, and never sounded obscured by background noise, even when walking in a busy part of my city.

Something else that’s received a boost is battery life. Sonos says that the Ace Ultra are capable of staying alive for 35 hours on a single charge, and my testing found this to be pretty accurate. This is a slight improvement on the original Ace, which could deliver 30 hours of use, which is essentially the standard for headphones in this price category. There’s also a rapid charging option, which gives the Ace Ultra three hours of playback from a three minute charge and a power saving mode if you want to extend the headphones’ life in a pinch.

One of the more welcome additions to the Ace Ultra is their expanded EQ options. Now, you can make use of an eight-band equalizer to customize the sound of the headphones to your specific taste. This is a big improvement on the basic two-band equalizer on the original Ace (for bass and treble levels), though there’s a more basic three-band option on the Ace Ultra if you prefer a less detail-oriented approach.

Let’s stick with sound, because there are a number of great features here that help you get the best out of both music and movies. First of all, you get all the hi-res goodness from the original Ace, with aptX codec support, as well as lossless audio via USB-C — and there’s a USB-C to 3.5mm cable bundled if you want to use them with a laptop, DJ controller, or other source device.

Dolby Atmos also returns on the Ace Ultra, enabling you to enjoy spatial audio on the go. Once again, this works an absolute treat — especially for movies, where head-tracking also helps to further immerse you in on-screen action. I tried using the TV Audio Swap feature, which enabled me to connect the headphones to the Sonos Beam Ultra, and Atmos movies sounded wonderful — more on that in the ‘sound quality’ section.

While the situations in which I’d use TV Audio Swap are admittedly niche, it's a very reliable feature. It harnesses Wi-Fi connectivity, so you don’t have to deal with the latency issues that connecting headphones to your TV over Bluetooth would bring. And you can easily switch between the soundbar, headphones, and other compatible Sonos speakers with a simple press of a button, which is highly convenient.

The Ace Ultra’s new Headphone Engine 2 also enables Headphone Linking, which allows them to directly connect to other components in your Sonos system — including compatible speakers such as the Sonos play — and move audio to and from your speakers and headphones. Like TV Audio Swap, this feels seamless and speedy to activate, and is great if you’re blasting music at home, but don’t want to disturb others if they want some peace and quiet.

On top of all of this, you get the usual good stuff: multi-point pairing, Bluetooth 6.0 connectivity, wear detection, and a relatively intuitive companion app. And when you add all of this together, I think it's fair to say that the Ace Ultra offer an incredibly fleshed-out, and well-refined feature set.

  • Features score: 5/5

(Image credit: Future)Sonos Ace Ultra review: sound quality
  • Big improvement over original Ace with better soundstaging, detailing, and control
  • Deep, immersive bass, clean mids, and tight, expressive treble
  • Fantastic Dolby Atmos performance

While we considered the original Sonos Ace to be a good pair of headphones, their somewhat middling musicality ended up holding them back from greatness. But luckily, Sonos has listened to the criticism, implemented next-gen 40mm custom drivers, and remedied a lot of the issues we had with the previous model. The result? A genuinely great-sounding pair of headphones.

I tried comparing the Sonos Ace Ultra against the original model directly, and when I say that the difference is striking, I truly mean it. In essence, the Ace Ultra provide a significantly broader soundstage with far better organization and balance, as well as deeper, more controlled bass, and more articulate, detailed treble. I also found them to offer superior handling of dynamics and enhanced instrument separation, meaning that, for me, Sonos is closer to rivals like Bose and Sony than ever before.

Sonos has been keen to talk up the Ace Ultra’s improved bass, so I started out by listening to a house track, Get It On by Jansons. The Ace Ultra delivered palpable, pumping bass, that was rhythmic and rapid, never sounding lethargic or boomy. This never concealed other sounds across the frequency range, either, with synths in the mid-range sounding well defined and tonally accurate, and high-pitched drums coming through with precision and vigor, helping the track to maintain its high energy.

Treble was especially tighter on the Ace Ultra compared to the original model, and the wider soundstage gave each individual element more room to breathe, and this became a theme across all of my listening tests.

For instance, with the funk track Joía Rara by Brylho, the upgrade the Ultra provided was considerable. On the original Sonos Ace, the soundstage felt confined, with guitars lacking definition in the mix, and as the track built, the horns, bass, vocals, and guitars sounded slightly convoluted, resulting in a messier presentation than I’d expected. But on the Ace Ultra, things were totally different. Guitars in the intro occupied a unique pocket, bass was well-balanced, and finer percussive details were perfectly audible. Vocals were also separated to greater effect, and while they weren’t the most textured or forward, they were more than clear enough.

Are the Sonos Ace Ultra the best-sounding headphones in their price bracket? Well, they’re not far behind the competition, though I do still think a couple of models edge just ahead. For example, I tested them side by side with the Sony WH-1000XM6, and I found that Sony’s cans supplied a slightly more dynamic low-end output and detailing in the mid-range. It was very close between these two, though. Of course, if you want the most expansive soundstage, headphones like the AirPods Max 2 will edge out the Ace Ultra, but they’re slightly more expensive.

Before we move onto design, we have to talk about the Ace Ultra’s handling of spatial audio. They support Dolby Atmos as well as head tracking, really helping you to immerse yourself in your favorite movies and TV shows, and the expansiveness that the headphones supply is seriously impressive.

When using TV Audio Swap with some 4K UHD Blu-ray discs, the Ace Ultra were able to conjure up an excellent sense of width, almost like some of the best Dolby Atmos soundbars can. I started by watching Elio, and the Ace Ultra did an incredible job — voices were clear, and as characters moved across the screen, they were tracked with precision, and if I tilted my head, sound shifted dynamically as if I was speaking with characters directly. As Elio returned to earth, deep, pounding bass hit with immense power too, but didn’t sound muddy or overbearing.

With Godzilla Minus One, the sense of a plane flying overhead in the opening scene was captured far more effectively than expected. It was genuinely convincing, as if the sound was truly coming from above. Dialogue was clear again, and Godzilla’s almighty screech was both tonally accurate and controlled, rather than tinny. More generally, the movie’s action scenes had tremendous width, creating a genuinely immersive experience.

  • Sound quality score: 4.5/5

(Image credit: Future)Sonos Ace Ultra review: design
  • Beautiful design, and very well made
  • Comfortable yet secure fit
  • Not fully foldable, but case included for added security

The Ace Ultra look an awful lot like the original Ace, but as someone who loved the way those headphones looked, that’s a big plus. The ear cups are relatively flat and understated, the rounded look is sleek and sexy, and the metallic details only add to the sense of premium. The button controls have shifted about slightly, but they’re incredibly easy to reach, and are all very responsive.

I tried the Soft White version which is stylish and modern, but the Ace Ultra are also available in Black, Agave, and Sand. All of these colorways are minimalistic and suit the luxurious vibe of the headphones to perfection.

In terms of fit, the Ace Ultra strike a really strong balance between comfort and security — they’re the goldilocks of headphones, if you will. There’s enough clamping power to prevent excess sound seeping in and keep them on your head during a workout or similar, but I never found this to be overbearing. Even when I was wearing a hat, the Ace Ultra felt really snug, with the plush ear cups and padded headband helping me to enjoy my music for many hours on end.

One subtle thing I like is how the inside of the right ear cup is green, making it easy to know which side is which when throwing the cans on. The right cup also features a slider, which can be used to easily adjust volume or trigger the Audio Swap feature. I usually prefer touch controls, but the tactile and reliable nature of these buttons might just have converted me.

Something that may frustrated a few users is that the Ace Ultra are not foldable. Yes, the ear cups rotate flat for when you want to stow the headphones in the case, but rivals like the Sony WH-1000XM6 offer a more compact, travel-friendly design. In addition, the case itself doesn’t quite offer the quality I was expecting, with a fuzzy exterior that’s a bit prone to picking up fibers. I also found that the zip jammed a bit easily. I much prefer the magnetic case of the XM6, which is more seamless to use and has a more quality look and feel.

  • Design score: 4.5/5

(Image credit: Future)Sonos Ace Ultra review: value
  • More fully featured and better sounding than the original Ace…
  • …but for the same price (at the point of launch)
  • A worthwhile choice for those with or without a pre-existing Sonos system

The Sonos Ace Ultra cured the single ailment that plagued the original model above else: their middling musicality. When I tested both headphones side by side, the difference was night and day. The original Ace were held back by a limited soundstage, underwhelming instrument separation, and a lack of balance across the frequency range. But the Ace Ultra sound so much more open, organized, and detailed, and truly compete with flagship rivals from Sony and Bose.

On top of that, you’re getting excellent Dolby Atmos performance, Headphone Linking and TV Audio Swap for linking up to other Sonos products, a beautiful design, and strong noise-cancelling capabilities. Considering that the Sonos Ace Ultra cost the same as the original model did at the point of launch — and less than the standard Ace initially cost in the UK — that’s pretty impressive.

At $449 / £399 / AU$699, they’re still quite the investment, of course. And I do think that some rivals, including the Sony WH-1000XM6 and Bowers & Wilkins Px7 S3 just edge above them in terms of sound quality. But those models can’t compete when it comes to movies — a big selling point of the Ace headphones. And the interactivity that these have with other Sonos products makes them a slam-dunk for owners of products like the Sonos Beam Ultra and Sonos Play.

Even if you don’t have a Sonos system, these headphones still justify their price with great all-round performance, a delicious design, higher-res audio codecs and wired lossless sound, as well as solid battery life. All in all, then, the Ace Ultra feel like a much more worthwhile investment than the original Ace, and manage to earn their price.

  • Value score: 4.5/5

(Image credit: Future)Should I buy the Sonos Ace Ultra?

Attribute

Notes

Score

Features

Enhanced ANC, call quality, and battery life, better EQ options, and neat smart features like Headphone Linking.

5/5

Sound quality

Much better musicality than the original Ace and fantastic Dolby Atmos for movies.

4.5/5

Design

Gorgeous looks, comfortable and secure fit, but the carry case could be better.

4.5/5

Value

Earn their price much more than the original Ace with great performance across the board.

4.5/5

Buy them if…

You want amazing headphones for movies
With Dolby Atmos compatibility and serious spatial audio skills, the Sonos Ace Ultra are arguably the best wireless headphones you can buy for movie-watching. You’ll experience expansive, three-dimensional sound with the Ace Ultra, and head-tracking will only further your immersion in any on-screen action.

You already own a Sonos system
If you own Sonos products like the Sonos Beam Gen 2 or Sonos Play, then the Ace Ultra are a very sensible buy. TV Audio Swap and Headphone Linking enable you to seamlessly transfer sound across your system, giving you unrivalled control over your music-listening and movie-viewing experiences.

Don’t buy them if…

You want the best-sounding headphones in this price-bracket
While the Sonos Ace Ultra offer great musicality, they can still be beaten. The Sony WH-1000XM6 provide a bit more bite and detailing, while the Bowers & Wilkins Px7 S3 provide even more nuanced soundstaging and instrument separation.

You want the best possible cans for travel
The Sonos Ace Ultra supply awesome ANC and do come with a carry case, but unlike some rivals, they’re not fully foldable. Rivals like the WH-1000XM6 are much more compact if you’re on the go and don’t have much space in your bag, for instance.

Sonos Ace Ultra review: also consider

Sonos Ace Ultra

Sony WH-1000XM6

Bowers & Wilkins Px7 S3

Price

$449 / £399 / AU$699

$449 / £399 / AU$699

$479 / £399 / AU$699

Drivers

Next-gen 40mm custom

30mm dynamic

40mm dynamic

Active noise cancellation

Yes

Yes

Yes

Battery life

35 hours (ANC on)

30 hours (ANC on)

30 hours (ANC on)

Weight

0.7lbs / 322g

0.6lbs / 254g

0.7lbs / 300g

Connectivity

Bluetooth 6.0, USB-C

Bluetooth 5.3, 3.5mm

Bluetooth 5.3, USB-C

Frequency range

20Hz-20kHz

20Hz-20kHz

10Hz-22kHz

Sony WH-1000XM6
The Sony WH-1000XM6 are true all-rounders, boasting some of the best ANC in the game, beautifully balanced audio, and a huge range of features. They’re fully foldable, offer exceptional call clarity, and support the LDAC codec for higher-res Bluetooth listening. At this price-point, they still feel like the best headphones that you can buy for the money. Read my full Sony WH-1000XM6 review.

Bowers & Wilkins Px7 S3
For me, the Bowers & Wilkins Px7 S3 are probably the best-sounding headphones you can buy in this price-range, with an exceptionally spacious, nuanced soundstage, impeccable detailing right across the frequency range, but dynamic and exciting enough to keep you engaged for hours on end. They also look truly premium, supply USB-C audio passthrough, and have an excellent control app — though their ANC isn’t anything special. Read our full Bowers & Wilkins Px7 S3 review.

How I tested the Sonos Ace Ultra

(Image credit: Future)
  • Spent about two weeks testing
  • Compared to competitors and original Sonos Ace
  • Predominantly streamed music over Tidal; also watched Dolby Atmos movies

I spent about two weeks testing the Sonos Ace Ultra headphones, during which time I exhausted their various features, like TV audio swap, watched a handful of movies with Dolby Atmos soundtracks, and listened to hours worth of music.

When listening to music, I predominantly streamed tunes over Tidal on my Xiaomi 17 phone, which supports aptX codecs. To start with, I sifted through the TechRadar testing playlist, but I also listened to a wide variety of tracks from my personal library. On top of this, I compared the Sonos Ace Ultra to some of their major competitors, like the Sony WH-1000XM6, as well as the original Sonos Ace.

More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve tested a wide range of audio gear, including other premium headphones like the Sony 1000X The Collexion, party speakers like the Marshall Bromley 750, Dolby Atmos soundbars like the JBL Bar 1300MK2, and more.

Categories: Reviews

Sonos Beam Ultra review: one of the best compact Dolby Atmos soundbars around

TechRadar Reviews - Tue, 09/22/2026 - 08:30
Sonos Beam Ultra review

The Sonos Beam Ultra doesn’t merely feel like an evolution of the pre-existing Beam products. Instead, it feels like something of a middle child between the Sonos Beam Gen 2 and the Sonos Arc Ultra. After all, it sits bang in between its sibling models when it comes to channel configuration, boasting a 7.1.2 setup with nine drivers, and while it has up-firing drivers for true Dolby Atmos, it still maintains a fairly compact design.

But the Beam Ultra certainly isn’t an awkward middle-child; it’s a highly capable mid-range option that provides striking cinematic sound, while still being able to fit into a smaller setup. But is the Sonos Beam Ultra worth its $699 / £699 / AU$1,099 asking price?

Like most of the best soundbars, the Sonos Beam Ultra supports Dolby Atmos (though notably Sonos omits DTS:X), and it handles the format very effectively. When watching a 4K UHD Blu-ray of The Mask, the soundbar seamlessly tracked the titular character as he tornadoes across the screen, with audio sounding as if it far exceeded the limited confines of the soundbar. When The Mask jumped upwards, diagonally, his upward trajectory was captured with precision.

(Image credit: Future)

And the Beam Ultra continued to impress me with its height effects across multiple movies. For instance, in Godzilla Minus One, the sense of a plane flying overhead was replicated more naturally than I expected from a mid-range bar. When Godzilla first appeared, the width of the kaiju’s movement was handled brilliantly — it sounded as if the creature’s stomping and destruction were emanating from different corners of the testing room, rather than a set of speakers, even without the help of surround speakers.

What’s more, the Sonos Beam Ultra nails the fundamentals. Watching Top Gun: Maverick, the roar of jet engines was palpable, and I found this to be the case across multiple films. For a mid-sized standalone bar, the Beam Ultra produces incredibly regimented, deep, and responsive low-end sound, which is excellent for movies with high-octane action sequences and dark, impactful scores. The Beam Ultra can also get seriously loud if you want to fill a more open space, but I never noticed any tinniness or harsh compression.

Still, this doesn’t come at the expense of sounds elsewhere in the frequency range. I found dialogue to be generally clear and detailed too, though I will note that turning on the Speech Enhancement mode and setting it to Medium gave me the best results. This means you can bring voices forward without hampering the fidelity of other elements in the mix.

The Beam Ultra even proved to be a hit for music, whether I was listening to an Atmos or stereo mix. With an Atmos mix of I’m Gonna Love You Just A Little More Baby by Barry White, there was tremendous width to the guitars, the vocals were perfectly clear in the center, and the bass had pleasant warmth to it. Moving over to First Summer by H.K., deep bass came through with attention-grabbing impact, sounding more full-sounding than I’d anticipated, yet keys and vocal chops in the mid-range still maintained excellent clarity, as did articulate drums in the treble.

(Image credit: Future)

The Sonos Beam Ultra isn’t just a great performer; it’s also rammed full of useful features. TruePlay is here, which can optimize sound for your room in mere seconds, but there are also ways to manually adapt audio. For instance, you can adjust height effects to your choosing, and there’s even a height-effect simulation mode if there’s less than four inches of space above your soundbar — ideal if you’re placing the Beam Ultra on a shelf in your TV stand, say.

I've already mentioned the Speech Enhancement mode, which has multiple levels to emphasize speech as little or much as you need, but there’s also a Night mode if you don’t want to disturb others. You can turn these options on in the Sonos app, but there’s also an option to add a voice assistant if you want to make adjustments on the fly.

The Beam Ultra can, as you'd expect, also interact with other components in your Sonos system. You can pair compatible speakers, such as the Sonos Play, and use them as surround speakers. TV Audio Swap is also back, and enables you to transfer sound from your Beam Ultra to your Sonos Ace or Sonos Ace Ultra headphones. I tried this out with the latter cans, and found that switching was speedy and responsive, while the quality of spatial audio was exceptional — make sure to read my Sonos Ace Ultra review for a deeper dive.

There are a fair few ways to connect to your Sonos Beam Ultra too. Of course, HDMI eARC is the most important — this is what you’ll use to hook the soundbar up to your TV and experience Dolby Atmos movies in all their glory. There’s also Wi-Fi 6 for streaming content over a local connection, allowing you to use services like Tidal Connect and Spotify Connect. And, unlike with the Beam Gen 2, you also get Bluetooth 5.3 connectivity as well as USB-C line-in.

One thing I would have really have loved to see, though, is an HDMI input, which has been left off of the Sonos Beam Ultra. Given that connecting the soundbar up to your TV already takes away one precious HDMI slot, it would’ve been great to get a passthrough port on this model — it’s something I use on my Marshall Heston 120 at home, given that I have multiple game consoles connected up.

Something that does not disappoint, though, is the Beam Ultra’s design. It’s sleek, modern, and stylish — but understated enough to seamlessly slot into just about any living space. It also has a great standard of build, intuitive touch controls, and handy status indicator lights to signify connection status. There’s also a microphone slider, which you can deactivate if you don’t want your soundbar listening in on you.

But here comes the big question: is the Sonos Beam Ultra actually worth the money? While $699 / £699 / AU$1,099 is by no means cheap, I still think the answer is yes. It’s priced right in between the Beam Gen 2 and Arc Ultra, and feels like a true best-of-both-worlds option — the height channels give it much more convincing Atmos performance than the Beam Gen 2, but you also get amazing power in a single, compact package.

Sure, you could get a soundbar and sub combo like the Samsung HW-Q800F for a similar price, and that will give you even deeper, more cinematic bass. But that model has a more restrictive 5.1.2 configuration, and if you want something more low-profile, it won’t fit the bill. You also get an excellent suite of features from the Beam Ultra, and you can add a compatible sub and other other Sonos speakers for surround sound if you wish.

As a result, the Sonos Beam Ultra might just be the best compact Dolby Atmos soundbar I’ve tested. In spite of its modest size, it plates up powerful, immersive, and clear audio, so if you want a simple plug-and-play solution to get amazing audio into just about any space, this is my top recommendation.

(Image credit: Future)Sonos Beam Ultra review: Price and release date
  • Priced at $699 / £699 / AU$1,099
  • Released in September 2026

The Sonos Beam Ultra is priced at $699 / £699 / AU$1,099, placing it mid-way between the Sonos Beam Gen 2 and the Sonos Arc Ultra. While you can get some multi-box options for a similar price, like the Sony HW-Q800F, for instance, the Beam Ultra features an extensive 7.1.2 driver configuration, and its compact nature is a central part of its appeal.

Sonos Beam Ultra review: specs

Dimensions

29.5 x 2.6 x 4.1 inches / 750 x 65 x 105mm

Speaker channels

7.1.2

Connections

HDMI eARC, Wi-Fi 6, Bluetooth 5.3, USB-C

Dolby Atmos / DTS:X

Yes / No

Sub included

No

Rear speakers included

No

(Image credit: Future)Should I buy the Sonos Beam Ultra?

Attribute

Notes

Score

Features

Good connectivity options, great sound modes, can add sub and surrounds, no DTS:X or HDMI passthrough.

4.5/5

Performance

Expansive sound in a compact package with imposing bass and clear dialogue.

5/5

Design

Stellar looks, slim build, neat touch controls.

5/5

Setup & usability

Plug and play set-up, easy to connect to via Wi-Fi or Bluetooth.

5/5

Value

Not cheap, but a perfect marriage of the standard Beam and Arc that’s priced accordingly.

4.5/5

Buy it if…

You want a compact soundbar with amazing Dolby Atmos
So many compact Dolby Atmos soundbars fall flat when it comes to Dolby Atmos. Often, that’s due to a lack of dedicated up-firing drivers to provide convincing height effects. But the Beam Ultra has those — and it also conjures up an impressive sense of width.

You already own a Sonos system
If you already have a compatible sub and speakers like the Sonos Play or Sonos Era 100, you can connect them to the Beam Ultra to open up even more immersive, three-dimensional audio. TV Audio Swap is also available if you’ve got the Sonos Ace or Sonos Ace Ultra headphones.

Don’t buy it if…

You need HDMI passthrough
The Sonos Beam Ultra does not offer HDMI passthrough, which might be troublesome if, like me, you have multiple games consoles, a 4K Blu-ray player, and other devices that use HDMI.

You need DTS:X
The Sonos Beam Ultra supports Dolby Atmos, but not DTS:X, much like other Sonos soundbars, including the Sonos Arc Ultra. A number of 4K discs make use of DTS:X, so if you’re someone who often makes use of that format, it may be worth looking elsewhere.

Sonos Beam Ultra review: also consider

Sonos Beam Ultra

Samsung HW-Q800F

Bose Smart Ultra Soundbar

Price

$699 / £699 / AU$1,099

$1,099 / £799 / AU$1,099

£899 / $899 / AU$1499

Dimensions

29.5 x 2.6 x 4.1 inches / 750 x 65 x 105mm

Main soundbar: 43.7 x 2.4 x 4.7 inches / 1110.7 x 60.4 x 120mm; subwoofer: 9.8 x 9.9 x 9.8 inches / 249 x 251.8 x 249mm

2.3 x 41 x 4.2 inches / 58 x 1045 x 107mm

Speaker channels

7.1.2

5.1.2

5.1.2

Connections

HDMI eARC, Wi-Fi 6, Bluetooth 5.3, USB-C

1x HDMI input, 1x HDMI eARC, digital optical, Wi-Fi, Bluetooth 5.3

HDMI eARC, digital optical, Ethernet, USB (service only), Bluetooth, Wi-Fi

Dolby Atmos / DTS:X

Yes / No

Yes / Yes

Yes / No

Sub included

No

Yes

No

Rear speakers included

No

No

No

Samsung HW-Q800F
This multi-box Samsung soundbar can now be found for a similar price to the Sonos Beam Ultra, if not less. It supplies exceptional sound, with impeccable bass from its dedicated sub, clear dialogue, and engrossing Atmos effects. It doesn’t offer the Beam Ultra’s compact size, but it does have DTS:X and HDMI passthrough. Read my full Samsung HW-Q800F review.

Bose Smart Ultra Soundbar
The Bose Smart Ultra Soundbar is a great 5.1.2 soundbar with wide, detailed sound, excellent build quality, and an effective companion app. It doesn’t quite offer the height or bass weight of the Sonos Beam Ultra, but it can often be found on sale for less than $700 / £500. Read our full Bose Smart Ultra Soundbar review.

How I tested the Sonos Beam Ultra

(Image credit: Future)
  • I spent one week testing the soundbar in our TV testing space at Future Labs
  • I watched a variety of movies, and listened to music in both Dolby Atmos and stereo formats

I spent one week testing the Sonos Beam Ultra at our TV testing space at Future Labs, during which time I exhausted its various features, watched a variety of movies, and listened to music in both Dolby Atmos and stereo formats.

To test the Beam Ultra, I hooked it up to the Samsung R95H TV via HDMI. I also made use of the Panasonic DP-UB820 to view Dolby Atmos-enabled 4K UHD Blu-rays. When listening to music, I streamed tunes over Tidal Connect via Wi-Fi, and made use of the TV Audio Swap feature to transfer audio from the soundbar to the Sonos Ace Ultra headphones.

I also compared the Sonos Beam Ultra directly against the Sonos Beam Gen 2 to assess improvements to height effects, expansiveness, and general functionality.

I’ve spent several years testing audio-visual gear at TechRadar, where I'm a Senior Reviews Writer. I’ve tested a vast number of soundbars specifically, from compact models like the Marshall Heston 60 to grand surround systems like the LG Sound Suite Immersive Suite 7 Pro.

Categories: Reviews

The Love Hypothesis on Prime Video is mostly mediocre despite the hot hotel room scene — but the new movie proves that the best romance of all can be found in our friendships

TechRadar Reviews - Tue, 09/22/2026 - 02:00

While everyone else at school was dreaming about their future spouse and white wedding, I was dreaming about my future friends. I didn't have the platonic relationships I was told I would have by popular 2000s kids TV shows like The Sleepover Club, with my friends and I braiding each other's hair and spilling all of their secrets.

Watching The Love Hypothesis on Prime Video brought the romance of that childhood dream flooding back. In fact, I think the new movie has got the love story at its core all wrong — this isn't a passionate affair between PHD student Olive (Lili Reinhart) and "evil" Doctor Adam (Tom Bateman), but an example of enduring connection between friends Olive and Anh (Rachel Marsh).

Of course, I get why the former route has been taken. Not only is the film an adaptation of the popular Ali Hazelwood novel of the same name, but Amazon is on a roll with its abundance of young-adult romantic dramas. You can't tune into a streamer that's developed bangers like Off Campus, Stirling Point and Every Year After and expect it to take a different tack here.

Is this taking the safe option? Probably. Does The Love Hypothesis tick the rom-com boxes it needs to? Undoubtedly. But while I don't think fans of the book will be disappointed, I can't help feeling that The Love Hypothesis has missed fully exploring its most enriching love story.

The Love Hypothesis is far from the greatest love story ever told — but it's fun

In a nutshell, Olive is a third-year biology PhD candidate at Stanford researching early pancreatic cancer detection. In order to convince her best friend Anh that she has completely moved on from a crush, Olive impulsively grabs and kisses Adam in the lab hallway. The two make a mutually beneficial agreement to fake date each other... though that fakeness doesn't last for long.

You can see, and correctly guess, all of the story beats just from me writing that short synopsis. There are no surprises, and things will end exactly where you expect them to. For some people, this is what they'll want — a reliable, sexy and giving rom-com in these desolate times? I get the appeal. Just don't expect anything that will blow your wind.

Even though Adam is barely tolerable for the majority if The Love Hypothesis, the ensemble cast is clearly at home in the genre. We want to be Olive as she wrestles between her head and heart, attending cool house parties and industry mixers. We want to shout at the characters who do her wrong, and we truly feel like her ride or die through the process.

The highly-anticipated hotel room scene, I can confirm, is hot. It's not the most explicit or sexiest moment in a movie I've ever seen, but you can't deny the natural chemistry sizzling between our two leads. Take everything you felt during the split second teaser in the above trailer and amplify it by 1000.

Yes, The Love Hypothesis largely plays it safe, with its direction, narrative and unbelievably underwhelming soundtrack all evidence of that. But the journey from start to finish is fun, understanding, and convincingly sincere. It's tough work being a woman as it is, let alone a talented woman in STEM.

This should really be a love story between two best friends

(Image credit: Prime Video)

But enough about textbook love... let's talk about friendship. My heart bursts for the love between Olive and Anh, and their unrelenting willingness to go above and beyond for each other. I mean... Olive is fake dating someone just so her bestie feels comfortable enough to pursue the man she likes without crossing a boundary. That's a girl's girl alright.

Neither of them compromise on their smarts, or dedication to their future careers, let a man come between them, or change who they are to fit in with their university's social norms. They are fully themselves at all times, allowing their value and worth to shine through in every aspect of their lives.

If anything, this is what I hope viewers will take away from the new Prime Video movie. At the end of the day, there are no greater romances than your friendships, and those of us that have such friendships are incredibly lucky to have such invaluable wells of support and love in their lives.

The Love Hypothesis might be marketed as a standard enemies-to-lovers romance, but strip back the tropes and you'll find a love letter to friendship — and this, for me, is the mark of a job well done.

Categories: Reviews

The Insta360 Link 2 Pro is genuinely one of the best webcams I've ever reviewed—but the high price may turn away some potential buyers

TechRadar Reviews - Mon, 09/21/2026 - 10:34
Insta360 Link 2 Pro webcam: Two-minute review

Action camera brand Insta360 has been making a name for itself in the webcam space recently, breaking out with its first-ever webcam, the Link, back in 2022. Then we saw the Insta360 Link 2 in 2024, so while I was hoping for a Link 3 this year, instead we're getting an interstitial generation: say hello to the Insta360 Link 2 Pro.

I can't say I'm disappointed, mind you. The Link 2 was a fantastic webcam, and while the Link 2 Pro is a fairly straightforward hardware upgrade, I'm not one to complain about getting more of a good thing. The Pro model increases the price a bit, but also delivers improved internals: a bigger, better sensor and wider aperture for superior FOV and light balance mean that 4K video capture looks even prettier. It also adds a little gold trim around the lens.

Now, the Link 2 was already a pricey product, so there's no denying that the Insta360 Link 2 Pro is very expensive for a webcam, even a 4K-capable one. More on that further down in this review, but in short: want one of the best budget webcams? This ain't that.

But for professional users creating video content or making regular presentations over video conferencing, the Link 2 Pro should be a very serious consideration. It may not be cheap, but you get a lot of webcam for your money: the performance, design quality, and feature set are truly all best-in-class.

(Image credit: Future)

It's almost a bit surprising that more camera companies haven't made the jump to webcams. From old-guard industry titans like Canon to up-and-coming manufacturers like DJI, you'd imagine that more of them would want to capitalize on a product type that has only become more necessary in the wake of the COVID-19 pandemic and the rise of remote work.

But hey: their loss is Insta360's gain, having made a seamless jump from action-cams and drones to premium webcams. And make no mistake, the Link 2 Pro is indeed a premium piece of hardware.

The build quality on display here is nothing short of excellent. The casing is a pleasingly sturdy construction of matte plastic and metal, with a compact folding clip that snaps magnetically to the rotating gimbal mount, makning it easy to attach to any monitor. It also features an industry-standard threaded screwhole on the underside for fitting it to a tripod or arm mount.

(Image credit: Future)

Of course, the gimbal is arguably the star of the show here. A two-point mechanism that allows for both horizontal and vertical rotation of the main camera unit, the gimbal allows the camera to track your movements within a wide radius thanks to AI-powered head-tracking technology.

I tested this thoroughly, and it really works; even when I attempted to move completely out of frame, the camera was surprisingly adept at tracking my movements.

That's not all it's capable of, though. The gimbal also enables several of the Link 2 Pro's nifty presentation modes, including desktop mode (which points down to the surface in front of you, ideal for showing off physical documents), whiteboard mode (which frames and zooms on a whiteboard or similar presentation board), and the very clever 'pause-tracking' mode (which lets you designate a specific area where the tracking lingers naturally as it follows you around, creating a more dynamic feel to your footage).

It also doubles as a privacy feature (as opposed to a lens cover or camera killswitch), with the lens pointing directly down when not in use. A set of four 'recognition markers' is included in the box, which are used for some of the tracking-lock modes.

(Image credit: Future)

All this fancy functionality, as well as more 'conventional' features like light balance adjustment and digital zoom, is readily accessible through Insta360's free software. It's a solid tool that makes setting up your ideal video experience swift and seamless, but even better, it's also available as a phone app – perfect for quick adjustments without needing to fire up an extra piece of software on your PC while you're trying to record.

With all that fancy AI baked into the Link 2 Pro, you might be hoping for something a little more sophisticated than tracking modes. Worry not: like the previous Link 2, this webcam features a set of preloaded gesture controls, letting you control the camera with your hand movements rather than needing to adjust anything in the app.

These are fairly basic, but I found they worked well in practice. Holding up your palm freezes (or unfreezes) your tracking or auto-framing preset, holding up two fingers toggles the aforementioned whiteboard mode, and making an 'L' sign and moving your hand up and down lets you zoom in and out. It doesn't feel particularly natural at first, but I quickly found myself adapting to it.

(Image credit: Future)

Now, let's get to the meat of this review: how's that picture quality? Well, I'm very pleased to report that it's nothing short of excellent. Even in the poorly-lit, cramped little box of a room I call a home office, I don't think I've ever looked better on a monitor-mounted webcam.

4K footage is sharp and bright at 30FPS with solid color reproduction. The upgraded sensor and larger aperture compared to the previous model give the Link 2 Pro great performance across a range of light conditions, showing me clearly and well-illuminated whether it was the middle of the day with the curtains open or late at night by the light of my desk lamp.

The field of view is also reasonably wide at 83.9 degrees, making it easy to fit two or even three people in frame for presentations or podcasts. I've seen webcams with broader FOVs – in fact, I very recently reviewed the Razer Kiyo V2, which boasts an almost too-wide 91-degree FOV – but this is more or less perfect for mainstream use.

(Image credit: Future)

The built-in microphone array is pretty good considering that integrated microphones frequently feel like an afterthought on webcams. It offers clear enough audio capture with AI-powered background noise canceling for casual to intermediate users, great for stuff like Zoom meetings, but serious professional content creators will likely still want to invest in a proper standalone microphone.

In terms of flexibility of use, it's good, if not perfect. It's relatively compact, so while there are smaller and lighter webcams out there, you can still take it with you on the go if you work across multiple locations. If you fit it to a suitable mount, you can easily flip it onto its side to record vertical video for social media without any loss of functionality. The only issue is that it's a tad bulky to mount atop a laptop display unless your laptop has a particularly sturdy hinge, but that's a pretty minor issue in the grand scheme of things.

(Image credit: Future)

Overall, I'm finding very little I can criticize about the Insta360 Link 2 Pro. Other than the fact that it's undeniably expensive and will almost certainly be more than the average user actually needs, this is just a fundamentally great product that easily ranks among the best webcams on the market right now.

If I absolutely had to pick something to nitpick here, it might be that the Link 2 Pro lacks any kind of lens cap. Dust and debris getting stuck on or under the lens can be a real irritation with webcams, so it would have been a nice inclusion – especially considering that it's a pricey, high-end webcam. But that really is the definition of nitpicking; this is genuinely one of the greatest webcams I've seen in a long time.

Insta360 Link 2 Pro webcam: Price & availability
  • How much does it cost? $249.99 / £239 / AU$439
  • When is it available? Available now
  • Where can you get it? The US, UK, and Australia

At $249.99 / £239 / AU$439, the Insta360 Link 2 Pro is the most expensive webcam the company offers, and it's undeniably a steep price for the average user. If you're purely looking for a high-quality 4K webcam and you're not bothered about fancy features, you could easily find one for half that price if you shop sales.

That being said, I'm not going to call this bad pricing. Considering that the Link 2 Pro is a high-end webcam aimed squarely at professionals who are serious about their hardware, along with the rich feature set and great picture quality it offers, I don't think the price is unreasonable – it's just not going to be worth it for more casual users.

Insta360 Link 2 Pro webcam: Specs

Razer Kiyo V2

Price:

$249.99 / £239 / AU$439

Supported resolutions:

4Kp at 30fps, 1080p at 60fps

Sensor:

Insta360 1/1.3" Low Light Excellence Sensor

Field of view:

83.9 degrees

Connection:

USB-C

Features:

Digital zoom, AI auto-framing, AI tracking modes, AI autofocus, dynamic color correction, HDR, mechanized gimbal

Software Integration:

Insta360 mobile app, Insta360 Studio

Should you buy the Insta360 Link 2 Pro webcam?

(Image credit: Future)Insta360 Link 2 Pro webcam report card

Value

The high asking price is the only thing holding the Link 2 Pro back from being genuinely perfect, but it's worth the money for professional users.

3.5 / 5

Design

The chassis remains unchanged from the Link 2, but it was already great, with the gimbal working fantastically.

5 / 5

Performance

Visual clarity is absolutely great at 4K, and the Link 2 Pro performs great at any light level and focal length.

5 / 5

Avarage rating

The definition of a premium webcam for content creators and remote professionals, the Insta360 Link 2 Pro is an easy recommendation – if you can stomach the price.

4.5 / 5

Buy it if...

You want the best of the best
It's not cheap, but the Insta360 Link 2 Pro more than earns its title of 'premium webcam', with great performance and a rich, useful feature set.

You want smart tracking modes
The AI-powered gimbal tracking of the Link 2 Pro works seamlessly across a range of use cases, making it ideal for activities like podcasting and shopping streams.

Don't buy it if...

You're on a budget
With a steep price tag of $249.99 / £239 / AU$439, there's no denying that the Link 2 Pro will be too expensive for many users.

You want something simple
While it does offer pretty effective plug-and-play functionality, the Link 2 Pro is a high-end device that offers more than the average Zoom user really needs.

Insta360 Link 2 Pro webcam: Also consider

Insta360 Link 2C
Our current top pick of the 4K webcams available on the market right now, the Link 2C offers performance that almost matches the Link 2 Pro, but removes the fancy mechanized gimbal to provide a more straightforward webcam experience at a lower price point.

Read our full Insta360 Link 2C review

Obsbot Tiny 2
The Tiny 2 from Obsbot delivers 4K video along with AI-powered tracking via its mechanical gimbal mount, just like the Link 2 Pro. For those who want a high-end video experience, this is a great pick.

Read our full Obsbot Tiny 2 review

How I tested the Insta360 Link 2 Pro webcam
  • Tested the webcam in video calls and recording
  • Compared image quality to other webcams
  • 8+ years of experience reviewing computer hardware

I've been using an Insta360 Link 2 as my day-to-day webcam for several months now, so I was curious to see how it compared to the Link 2 Pro. As per my usual process for reviewing webcams, I replaced my daily driver with the Link 2 Pro for just over a week, using it for my usual spate of workday video calls.

I also installed the relevant Insta360 software on my phone and PC to test out its functionality, and made sure to test the performance of the Link 2 Pro in a range of different light conditions by recording video and comparing the clips side by side.

I've been testing and reviewing PC hardware for more than eight years, starting at the PC-building hobbyist magazine Maximum PC before making the leap to TechRadar's computing team. I put all of my knowledge and experience behind each and every one of my product reviews, so you can be assured that you're getting an informed and bias-free judgement.

Read more about how we test

  • First reviewed September 2026
Categories: Reviews

I really wanted to love the new Dell XPS 13, but Dell, we need to have a serious chat about your RAM choices

TechRadar Reviews - Mon, 09/21/2026 - 09:54
Dell XPS 13 (2026): Two-minute review

The new Dell XPS 13 (2026) is a shift from Dell's usual modus operandi, finally bringing the premium-quality XPS line down to a more affordable space. If that sounds familiar, it's because Apple did the exact same thing earlier this year: the arrival of the MacBook Neo has shaken up the laptop market, and evidently left other manufacturers scrambling to front their own competition to Apple's new wallet-friendly MacBook.

But before I delve into how effective a frontline soldier Dell's new effort is in the never-ending battle between Windows and Mac, it's time for a brief history lesson: the lore of XPS, if you like.

Dell's XPS brand was unceremoniously killed off last year, before being suddenly resurrected at CES 2026, presumably because their executives realised that shuttering your single most iconic and well-loved brand is a bad idea (shocker, I know). But as I mentioned above, the return of XPS has seen a paradigm shift; while the Dell XPS 14 and XPS 16 are still the pricey, high-end laptops I've come to expect from the XPS lineup, the new XPS 13 is an entirely different beast.

(Image credit: Future)

It's still identifiably an XPS laptop, there's no denying that. From the ultra-thin chassis to the all-metal casing and minimalist logo on the lid, you'd be forgiven for thinking at first glance that this was just another premium XPS model.

But opening up the laptop betrays its more budget-conscious nature immediately; gone are the giant, edgeless touchpad and zero-spacing keyboard seen on this year's 14- and 16-inch models, replaced instead by more traditional fare. The touchpad and keyboard here wouldn't look out of place on the average Chromebook.

A peek at the spec sheet further solidifies the new XPS 13's position as a MacBook Neo rival; a lower-end hexa-core Intel Core 5 chip and only 8GB of RAM in the base model all point to this being a more sensibly priced product.

I'll dig into the performance specifics later in this review, but the good news is that the lower-spec hardware doesn't render the XPS 13 dangerously underpowered. This laptop is perfectly capable of handling everyday work, even if it's not a performant powerhouse like its bigger siblings. The battery life is also excellent, and the display is very high quality for the price point. In short, there's a lot to love here.

Unfortunately, there are a few things that hold this new breed of XPS back. The base configuration features only 8GB of RAM, which is fundamentally insufficient in the current era of Windows software, and the measly port selection may prove frustrating for some users. It's also just a bit too expensive to be considered a true rival to the MacBook Neo.

Now, it's arguable that this isn't entirely Dell's fault. The ongoing RAM crisis, spurred by skyrocketing demand for AI data center hardware, is causing the prices of all kinds of computer components to spike sharply. Shifting to 8GB of RAM in the base configuration is very likely to be a cost-saving move. Overall, I'd say that this is a pretty solid effort from Dell – just don't expect too much from it.

Dell XPS 13 (2026) review: Price & availability

(Image credit: Future)
  • Starts at $699 / £749 / AU$1,597.20
  • Student discounts help a lot
  • Available worldwide

Brace yourself: this is going to be one of the longest price sections I've written for a review in a while. There's a lot to talk about here, sorry!

Apologies to our readers outside the US: the pricing of the Dell XPS 13 beyond America is pretty damn awful, to the point where I'm worried it might have already scuppered any chance of this laptop being a genuine competitor against the MacBook Neo.

In the US, the base configuration comes with a 256GB SSD, Intel Core 5 320 processor, and 8GB of RAM. It'll cost you a very reasonable $699, or $599 with a student discount – in other words, exactly the same price as the 256GB MacBook Neo.

However, I'd generally struggle a little to recommend that version. 8GB of RAM is simply substandard for running software in Windows 11 these days, especially if you plan to run multiple programs at once. Stepping up to the safer recommended 16GB of RAM (which also mandatorily bumps up the SSD to 512GB) will cost you $899, already taking us a fair bit beyond the competing MacBook Neo. Of course, there's no 16GB version of the Neo available, but it's worth noting that the 'unified memory' used by Apple's laptops is a bit more efficient than traditional laptop RAM.

Outside the US, things start to look dicey. For starters, there's no 256GB SSD configuration available in Australia, with the cheapest available models starting at £749 / AU$1,597.20 – a far less attractive prospect after accounting for exchange rates. And if you want to bump things up to 16GB of RAM, you're looking at a fairly steep £1,099 / $1,897.50. My review unit is the 8GB UK configuration with 512GB of storage, which will cost you £899 (though at the time of writing, it's already on sale for £769)

There are higher-spec models available, too, with the RAM configurable up to 32GB and the SSD up to 1TB, as well as the option to upgrade the CPU to a significantly more powerful Intel Core Ultra 7 355. This top-spec model will cost you $1,799.99 / £1,899 / $3,698.20 – and quite frankly, at that point you might be better served by opting for the more premium XPS 14. Configurations with the Core Ultra 7 processor also benefit from an upgrade to Thunderbolt 4-capable USB-C ports.

Overall, I'm not too impressed by the pricing of the Dell XPS 13, especially considering its market position as a Windows-toting rival to the MacBook Neo. There's certainly still an argument that it deserves a place among the best budget laptops (for buyers in the US, at least), but it's not the phenomenal value product I was really hoping to see when I first heard about it. Still, if you're a US shopper who wants a basic but effective laptop for work or school, it's not a terrible choice.

  • Value score: 3 / 5
Dell XPS 13 (2026) review: Specs

Base spec

Max spec

Price

$699 / £749 / AU$1,597.20

$1,799.99 / £1,899 / $3,698.20

CPU

Intel Core 5 320

Intel Core Ultra 7 355

Graphics

Integrated Intel Graphics

Integrated Intel Graphics

RAM

8GB LPDDR5X

32GB LPDDR5X

Display

13.4inch, 2.5K (2560 x 1440), 120Hz, 500 nits, Touch

13.4inch, 2.5K (2560 x 1440), 120Hz, 500 nits, Touch

Storage

256GB M.2 PCIe SSD

1TB M.2 PCIe SSD

Ports and Connectivity

2x USB-C 3.2 Gen 2; Wi-Fi 7, Bluetooth 6.0

2x Thunderbolt 4 USB-C; Wi-Fi 7, Bluetooth 6.0

Battery

52Wh

52Wh

Weight

2.2lbs (1 kg)

2.2lbs (1 kg)

Dimensions

11.7 x 7.9 x 0.5 inches / 297 x 201 x 13mm

11.7 x 7.9 x 0.5 inches / 297 x 201 x 13mm

Dell XPS 13 (2026) review: Design

(Image credit: Future)
  • Impressively thin and light
  • Premium build quality
  • Port selection is feeble

Straight off the bat, despite its aggressive redesign and shift towards more conventional aesthetics, the 2026 Dell XPS 13 still feels like a premium product. I might have complained about the pricing further up in this review, but considering that the build quality remains solid regardless of which configuration you buy, I have to admit that I'm very pleased here.

The entire chassis is machined from high-grade aluminum, making it highly durable without compromising on weight. The whole thing weighs almost exactly one kilogram, and combined with the 13.4-inch display's slim bezels, it's a very portable laptop indeed.

It's also impressively thin, measuring just half an inch thick with the lid closed. The casing has rounded corners and a smooth matte finish, which is reasonably good at resisting scratches and fingerprint marks. It's available in a few different colorways, all muted metallic tones, with availability varying between regions and configurations.

(Image credit: Future)

The keyboard and touchpad are totally different from what we've seen on previous XPS 13 models, now trending towards functionality over style. The LED-backlit keys are reasonably spaced, comfortable to type on even for extended periods, and have a decent amount of travel despite the laptop's ultra-thin design.

They're perhaps a little spongy on full presses for my liking, with a bit of flex in the keyboard housing; something which I consider completely forgivable in a sub-$800 laptop, but might push some users towards the more premium typing experience of the XPS 14 or 16. Similarly, the touchpad has a satisfying click, but firm presses on the bottom corners feel a tiny bit flimsy – definitely not a dealbreaker for a budget laptop, but again, it gives me pause when it comes to recommending the higher-spec models.

Thankfully, some things haven't changed from previous models. The display is once again the star of the show here: a fantastic 2.5K touch panel, boasting good maximum brightness and impressive color reproduction, especially considering that the screen is the same regardless of which internal spec you opt for. If you get the cheapest configuration, you're getting plenty of bang for your buck when it comes to the display.

(Image credit: Future)

Looking at the rest of the physical design, it's all good without being spectacular. The speakers are integrated under thin slots on either side of the base and are reasonably loud for such a small laptop. Don't expect thumping bass here, but the volume is good without high notes sounding tinny.

The webcam is also decent, 1080p rather than the 720p resolution you'll find on many budget-conscious laptops. I've certainly seen sharper webcam footage, and the low-light performance is merely okay, but it gets the job done well for the most part. It also supports facial recognition logins via Windows Hello. The integrated microphone array is decidedly average, though, so I'd advise getting a decent headset if you plan to make regular video calls.

Lastly, we come to connectivity, which is perhaps the most mixed part of an already mixed bag. Wireless connectivity is top-notch; Wi-Fi 7 ensures speedy, lossless internet (assuming you're connected to a network that supports it!) while Bluetooth 6.0 is an exceedingly rare sight on any laptop under $1,000.

FutureFutureFuture

Physical connections, though? Yeah, this one's a wash. We criticised the MacBook Neo for only having two basic USB-C ports (no Thunderbolt 4 support), and it's the same case here. Granted, these are both USB 3.2, while one of the Neo's ports is a frankly pathetic USB 2, and springing for the higher-spec CPU upgrades both ports to Thunderbolt 4, but it's still just fundamentally not enough ports.

Considering that the only way to charge the XPS 13 is to use one of the only two ports available, you're down to just a single port any time it's plugged in. Power users who want to connect multiple peripherals are going to need to spend extra on a USB-C hub, and anyone who doesn't shell out for the more powerful CPU will be dealing with slower charging and data transfer speeds.

Overall, it's a well-designed laptop that feels like it should last for years, but I will be docking a point for the sheer dearth of ports. If you prefer to connect your hardware solely via wireless means, though, you should have very little to complain about here.

  • Design score: 4 / 5
Dell XPS 13 (2026) review: Performance

(Image credit: Future)
  • Decent everyday performance
  • Gets a little warm under load
  • 8GB RAM is simply not enough for heavier workloads
Dell XPS 13 (2026) benchmarks

3DMark: Night Raid: 17,611; Fire Strike: 3,308; Steel Nomad: N/A; Solar Bay: N/A; Solar Bay Unlimited: N/A; Solar Bay Extreme: N/A; Solar Bay Extreme Unlimited: N/A
Geekbench 7: Multicore: 7,103; Single-core: 2,345
Cinebench 2026: Single Core: 455; Multi Core: 1,604
Crossmark: N/A
Passmark Overall: 3,872.3; CPU: 16,166.2 2D Graphics: 745.0; 3D Graphics: 2,566.9; Memory: 2,389.7; Disk: 33,862.4
BlackMagicDisk: Read: 3,774MB/s; Write: 2,829MB/s
HandBrake 4K to 1080p: 22.48fps
Total War: Warhammer III: 1080p, Medium: N/A
Total War: Warhammer III: 1800p, Ultra: N/A
Battery Life (TechRadar movie test): 16 hours and 17 minutes

I'm a big believer in setting realistic expectations, so once I learned that my XPS 13 review unit was the UK standard configuration with 8GB of RAM and the decidedly low-end Core Ultra 5 320 CPU, I immediately tempered my hopes of great performance.

Despite this, this XPS 13 performed a bit better than I'd expected overall. Performance in my everyday workloads – including web browsing, word processing, and some light image editing in GIMP – was good, with virtually no slowdown even with half a dozen Chrome tabs open and Spotify running in the background. Windows 11 generally felt snappy and responsive.

The more you start to load it down with tasks, though, the more it struggles. The simple fact is that in the current age of computer software, 8GB of RAM just isn't sufficient for more complex or varied workloads.

It was a telling moment when Apple finally relented and upgraded the minimum starting memory on the best MacBooks to 16GB rather than 8GB back in 2024; the demands of modern professionals have shifted, and I was rather upset to see that the MacBook Neo has reverted back to 8GB as standard. However, this is less of a problem for Apple, since the 'unified memory' used in MacBooks is faster and more efficient than traditional DDR laptop RAM, and the company's total control of the Mac software/hardware ecosystem makes optimizing for less memory a bit easier.

(Image credit: Future)

So let's break down how the XPS 13's 8GB of RAM actually performed. I'll start with the bad news: some of my tests failed to complete altogether, loading up but then aborting. I've not seen this happen in quite a while, with the 16GB industry standard evidently shielding me from such failures.

In total, the XPS 13 failed eight of our standard benchmark tests, most of which were the more demanding 3DMark graphical tests. However, I also noticed some instability in other tests; Cinebench crashed several times before I was able to get stable readings, and 3DMark also crashed once before I was even able to start running tests.

The tests that did run showed decidedly lackluster performance in 3D rendering and similar creative workloads. This isn't a laptop you'll be squeezing in a few rounds of Marvel Rivals on, though I did manage to get Slay the Spire II running fine, so perhaps some 2D indie gaming is still on the table here.

Outside of regular testing, I also tried to fire up Adobe Photoshop and Premiere Pro. Both initially loaded without crashing, but were sluggish in practice, and Photoshop ended up crashing after about five minutes of use.

The Dell XPS 13 (2026) got rather warm during the more intensive tests. The thermal exhaust is a thin slot nestled into the display hinge, and while the fans remained impressively quiet throughout my testing, the underside of the laptop did get too toasty to comfortably have it actually on your lap while running resource-intensive software. It did remain cool and near-silent during regular office work, however.

The takeaway here is that while the 8GB model of the XPS 13 is perfectly capable of handling basic everyday workloads, it just doesn't have the oomph for anything more demanding than straightforward office or schoolwork. If that's all you want to do, the budget-friendly 8GB configuration should be fine; if you've got grander designs than that, you'll need to pay extra for a more powerful model.

  • Performance score: 3 / 5
Dell XPS 13 (2026) review: Battery life

(Image credit: Future)

Intel's third-generation Core chips are clearly putting in some work here. Although the Dell XPS 13 (2026) only has a 52Wh battery (far smaller than the batteries you'll find on many ultrabooks these days), the efficiency of this chip can't be understated; our video playback battery test saw the laptop sail comfortably past the 16-hour mark.

There are laptops that can go for longer, but at this price point, that's a very respectable effort. It outstrips the MacBook Neo by nearly three hours according to our tests. I found that even at maximum brightness, with a Bluetooth mouse and headset connected and the Windows power mode set to Balanced, it could comfortably make it through an eight-hour workday without needing a charge.

The laptop also holds charge fantastically when not in use. My partner got sick, and I had to shelve this review for a couple of weeks, during which time the XPS 13 simply sat untouched on a desk in my home office. When I finally opened it up to start my review process, it was still at 90% charge. When plugged in, it charges up to full in just under an hour (though the higher-spec model with Thunderbolt 4 ports will presumably charge faster).

My only real criticism here is that it doesn't come with a power adapter in the UK and EU. Much like Apple's approach with the MacBook Neo, this is ostensibly due to local regulations that mandate consumers' ability to buy a laptop without a charger, but come on; you could include the option to add one at checkout. I've criticized Apple for this in the past, too: it's malicious compliance, and it's simply irritating for the end user.

  • Battery life score: 4.5 / 5
Should I buy the Dell XPS 13?Scorecard

Attributes

Notes

Rating

Value

The UK and Australia pricing is a shame, but student discounts help a lot, and the base model is very reasonable in the US.

3 / 5

Design

Despite a disappointing port selection, this is a well-crafted laptop that feels nicely durable and packs an excellent touch display.

4 / 5

Performance

Decent performance in everyday tasks, but users aiming to multitask will definitely want to invest in the 16GB RAM model.

3 / 5

Battery life

The XPS 13 can comfortably cruise through a full workday (and then some) without needing a charge.

4.5 / 5

Total Score

The 2026 XPS 13 isn't quite the MacBook Neo-beater that Dell clearly hoped it would be, but it's still a solid pick for anyone who wants a Windows alternative to Apple's new budget MacBook.

3.65 / 5

Buy it if…

You want something ultra-portable
The impressively slim design, one-kilo total weight, and sturdy aluminum chassis all work together to make the XPS 13 an eminently portable laptop for taking on the go.

You want a premium design for a non-premium price
It looks and feels impressively high-end, even in the cheapest available configurations. While it might be a little more function-over-form than the larger XPS models, this still feels like a premium laptop.

Don't buy it if…

You want lots of ports
There are only two ports on board, and both are USB-C (without Thunderbolt 4 in our review configuration), so you'll need a USB hub if you want to connect multiple peripherals.

You want to run demanding software
While it can handle everyday work with easy, the lower-end CPU and 8GB of RAM in the base configuration simply don't offer enough juice for power users planning on aggressive multitasking or resource-intensive programs.

Dell XPS 13 (2026) review: Also consider

HP OmniBook 7 14-inch (2025)
Like the XPS 13, the OmniBook 7 is an incredibly thin and light laptop. Not only that, our reviewer was very impressed with how well it handled all kinds of workloads, and it has a superb battery life to boot. Read our full HP OmniBook 7 14-inch (2025) review.

Asus Zenbook A14
Another ultra-portable hero, the A14 offers truly staggering battery life; in fact, it’s the most enduring laptop we've tested in recent years, lasting a staggering 28 hours in our movie playback test. Its build isn’t as premium as the XPS 13’s, and its display isn’t as bright, but it’s still a capable machine. Read our full Asus Zenbook A14 review.

How I tested the Dell XPS 13 (2026)
  • Tested for one week
  • Used for a variety of workloads
  • 8+ years of hardware testing experience

If you've read any of my other reviews, you'll already know the drill: I swapped out my daily driver (the excellent Asus Zenbook Duo 14) for the Dell XPS 13 for one full week, including the weekend.

This helps me get a proper feeling for how the laptop functions in everyday use scenarios, testing it out for a range of typical tasks including web research, writing articles, and image editing. Naturally, I also ran the laptop through our usual suite of synthetic benchmarking tests, including our looped video test for battery life.

I've been a computer hardware journalist for more than eight years, and working for TechRadar for half a decade. In that time, I've reviewed more laptops than I can remember for numerous different publications; the number is certainly in the dozens, quite likely into triple digits by now! I put every bit of experience and expertise I've gained over those years into my reviews, so you can rest assured that you're getting accurate, bias-free information.

  • First reviewed: September 2026
  • Read more about how we test
Categories: Reviews

CareerBuilder job recruitment site (2026) review

TechRadar Reviews - Mon, 09/21/2026 - 05:36

CareerBuilder is a popular job site that aggregates numerous listings and lets job seekers search through them seamlessly. Users can upload resumes and get matched with employers and also receive ongoing job opportunity alerts.

Founded way back in 1995, CareerBuilder is one of the earliest job sites still operating today. It once had the largest market share of job sites in the U.S. but gradually lost ground to rivals like Indeed and Glassdoor. It remains fairly popular, though, with users across the US, Asia, and Europe.

I reviewed CareerBuilder to help you decide if it’s a good option out of the many job sites to choose from. What do you gain from it, what are its pros and cons, and is it better than the competition? I’ve answered these questions in detail, so read on to learn what CareerBuilder offers.

CareerBuilder: Plans and pricing

CareerBuilder follows the pricing model used by most job boards. Job seekers use the site for free, while employers pay to promote job listings and gain access to the resume database. You can check it out by clicking here.

It’s a business model that works well for both parties. Job seekers find opportunities without paying, while businesses pay to connect with qualified job candidates.

Pricing for employers starts at $299 per month. The Lite plan, for $299 per month, allows 1 active job listing and 500 resume views on CareerBuilder’s database. Using algorithms, the job listing is matched with fitting resumes from CareerBuilder's database, and the employer receives ongoing email alerts about resume matches.

The Standard plan, for $399 per month, allows 3 active job listings per month while other features remain the same. For $599 per month, the Pro plan allows 5 active job listings.

CareerBuilder offers discounted prices for businesses that commit to paying annually instead of monthly. Large enterprises can also negotiate directly with the sales team and secure bulk discounts.

Unlike several job sites I’ve reviewed, CareerBuilder offers no free plan for employers, and I consider this a disadvantage. Some sites allow employers to post 1 or 2 job listings for free, then pay for advanced features like access to the resume database. In this case, there’s no free plan or a standard free trial.

CareerBuilder: Features

CareerBuilder connects job seekers to employers advertising job listings in numerous niches. For job seekers, it’s free to use, but employers pay for promoting job listings.

Anyone can sign up as a job seeker and scour CareerBuilder’s job listings, with filtering by location, type (full-time or part-time), date posted, and specific keywords.

For instance, if you’re looking for a full-time software engineer role in Denver, Colorado, you’ll adjust the search filters to get the exact results matching your query. If you need a part-time job at a local retailer, you can also adjust filters to get exact matches.

(Image credit: CareerBuilder)

You can also upload your resume to CareerBuilder’s database, and employers can find you in this database. This means that you don’t always have to go seeking jobs, but jobs can come to you. If an employer thinks your resume is a very good fit, they’ll contact you for further interviews.

(Image credit: Uploading a resume to CareerBuilder)

I like that CareerBuilder sends job alerts tailored to users’ resumes and previous searches. Some of the best roles are hiding in plain sight, so you won’t always find them when searching, but CareerBuilder’s email alerts can quickly point you to them.

For some jobs, you can apply with one click, but others can require a multi-step process. Either way, I found the application process as straightforward as it gets.

CareerBuilder provides some profile insights that I found valuable. I received alerts when employers viewed my profile (even if most didn’t send job offers) and when my profile appeared in search results. These insights tell users about the employers and job searches their profiles match, and they can optimize further to get the right roles.

I also like that CareerBuilder offers salary data, though not as detailed as rivals like Glassdoor. This data makes it easy to research pay ranges for expected jobs, based on location, roles, and other data.

I’ve discussed the features job seekers get on CareerBuilder, so let’s now look at what employers get on this platform. First, businesses gain access to a vast resume database from which they can select suitable job candidates. Just as job seekers search for jobs with filters like location and title, you can filter through resumes to find candidates that match your preferences, then contact these candidates with potential offers.

Of course, businesses can create job postings for candidates to view on the CareerBuilder job board. I like that CareerBuilder provides an AI assistant that helps generate compelling job descriptions. With many businesses posting similar roles, a compelling description makes yours stand out to job seekers.

Notably, CareerBuilder offers job syndication, where job listings are published not only on CareerBuilder but also on partner sites and niche job boards. This syndication increases the reach of your job posts and makes finding good candidates easier.

A centralized dashboard makes it simple for businesses to sort and save resumes, monitor applications, and keep tabs on conversations with candidates.

CareerBuilder offers standard features that employers find on rival job boards. My main complaints are the relatively high costs and lack of a free plan, even one with restricted features.

Pricing starts at $299 per month for 1 active job listing and goes up to $599 per month for 5 listings, which I consider steep. Large businesses can negotiate discounts, but the pricing remains relatively high. I’ll advise only medium-sized and large businesses with bigger budgets to get a CareerBuilder employer account, but it doesn’t suit small businesses.

CareerBuilder: Ease of use

CareerBuilder offers a modern, visually appealing interface that I found easy to navigate. The interface sports a white background and a few bright colors to highlight buttons, icons, and features, giving it a modern, minimalist look.

Filtering job listings, uploading resumes, and scouring resume databases felt noticeably easy. This sleek, easy-to-navigate interface benefits both job seekers and employers.

(Image credit: CareerBuilder )

You can access CareerBuilder from a web browser or download the iOS or Android app. The smartphone app allows for easy, on-the-go access, particularly for browsing job listings and quickly applying to available jobs.

CareerBuilder: Support

You can access CareerBuilder from a web browser or download the iOS or Android app. The smartphone app allows for easy, on-the-go access, particularly for browsing job listings and quickly applying to available jobs.

CareerBuilder: The competition

CareerBuilder has many competitors, as it operates in a crowded job board industry. I’d have mentioned Monster as a rival, but both are owned by the same company. Glassdoor and Snagajob are then the main rivals I’d like to highlight.

Glassdoor operates a job board like CareerBuilder, but its strength lies in massive salary data, company reviews, and interview prep tips for job seekers. CareerBuilder also provides salary data, but its dataset is nowhere as close as what’s available on Glassdoor.

Snagajob is built for a specific niche of hourly, part-time, and seasonal jobs in retail, restaurants, and related industries. You can also find such jobs on CareerBuilder, but I think Snagajob is better for seeking hourly, temporary roles at retail stores, bars, restaurants, warehouses, etc. However, CareerBuilder offers a broad set of jobs, both full-time corporate and hourly roles, that you won’t find on Snagajob.

CareerBuilder: Final verdict

CareerBuilder is good for both people seeking jobs and businesses seeking to connect with the right job candidates, although prices are relatively high for businesses. It’s a reliable platform that connects job seekers with the right opportunities from businesses.

However, I’d note that CareerBuilder doesn’t offer much to differentiate itself from the competition. It feels like just other job boards do. That’s not really a flaw, but just something to note when comparing CareerBuilder against other job boards.

For more picks, we've tested the best recruitment platforms and the best job sites.

Categories: Reviews

The Dreame X60 Pro Ultra Complete is a ridiculously clever and exceedingly competent premium hybrid robot vac for the well-heeled

TechRadar Reviews - Mon, 09/21/2026 - 03:00
Dreame X60 Pro Ultra Complete review: two-minute review

Dreame’s flagship X60 Pro Ultra Complete is one of the most feature-filled, efficient and reliable hybrid robot cleaners this writer has so far reviewed — and I've reviewed many. Its class-leading 42,000Pa of suction power is certainly attention-grabbing, but the cleverness of this autonomous floor bot goes well beyond brute suction force.

Like some Roborock models, the X60 Pro Ultra is equipped with a retractable LiDAR turret that allows the unit to scoot under the lowest of furnishings with a floor clearance of just 3.5 inches (9cm). Better still, it can also tackle thresholds up to 3.9 inches (10cm) in height, so doorways and awkward transitions are much less likely to bring its cleaning mission to an abrupt halt.

Dreame has also addressed one of the biggest weaknesses of robot cleaners – getting properly into edges and corners. Where most premium bots are able to extend one of the mops by a couple of inches, this one is capable of extending it's edge-cleaning mop to an extremely impressive seven inches (18cm), and you can see the amazing results of this when it's working along skirting boards and around chair legs. Likewise, its front side-mounted sweeper brush can also reach up to four inches (12cm) into corners for a much more thorough sweep.

Dreame appears to have thrown everything it has into this flagship model, and the results are very impressive. Granted, it’s expensive, possibly over-engineered and perhaps more robot cleaner than most people actually need, but if your idea of luxury is never having to sweep or mop floors again, this model is a very tempting proposition, despite some minor anomalies in the obstacle avoidance department. The fact it comes with a surfeit of extra accessories — including spare dust bags, filters and rollers — is the icing on a very substantial cake.

Dreame X60 Pro Ultra Complete review: price & availability
  • List price £1,299 / €1,499 / $1,699.99 (X60 Max Ultra)
  • Launch date July 2026
  • Availability UK and parts of Europe

(Image credit: Future)

At the time of writing, the Dreame X60 Pro Ultra Complete is available in the UK for £1,299, with retailers including Dreame, Amazon and John Lewis & Partners listing it. It is also available in most parts of Europe, priced at €1,499, with some discounts taking it to a much lower €1,199.

In the USA, Dreame is concentrating on the X60 Max Ultra Complete, a slightly different variant with lower suction power (35,00Pa) than the UK-spec X60 Pro Ultra Complete. You can purchase the Max version via the US Dreame store for $1,699.99 or Amazon where it shifts for a slightly discounted $1,614.99.

At the time of writing, the Dreame X60 Pro Ultra doesn't seem to be available in Australia yet.

In the UK, the X60 Pro Ultra Complete is firmly in premium robot-vacuum territory, so there are plenty of alternatives worth considering. The Roborock Saros 20 is an obvious rival that offers a similarly sophisticated low-profile design for a shade under £1,000 and the Ecovacs Deebot X8 Pro Omni is another strong contender, particularly if mopping performance is a priority. Dreame’s own X40 Ultra is also worth considering if you want many of the flagship brand’s features without spending X60 Pro Ultra money.

However, for design, performance, impressive specs and the horde of spare parts it comes with, the X60 Pro Ultra Complete is difficult to ignore. While its combination of 42,000Pa of suction power, extendable cleaning hardware and highly automated dock puts it firmly at the expensive end of the market, I think it's a price worth paying.

  • Value score: 4.5/5
Dreame X60 Pro Ultra Complete: specs

Robot dimensions (W x H)

13.77 x 3.5 inches / 35 x 8.9cm

Cleaning dock dimensions (H x W x D)

19.64 x 17.95 x 15.35 inches / 49.9 x 45.6 x 39cm

Suction

42,000Pa

Cleaning dock bin size

3.38 quarts / 3.2 liters

Clean water tank size

4.43 quarts / 4.2 liters

Dirty water tank size

3.17 quarts / 3 liters

Navigation & obstacle avoidance

Pathfinder VersaLift ToF LiDAR paired with AI OmniSight System 3.0 + LED

Carpet detection

Yes

Threshold crossing

ProLeap with dual retractable legs for up to 3.93 inches (10cm) clearance

Mopping functions

Dual heated rotating mops + dock-based maintenance

Robot noise level

65dB at five feet

Dreame X60 Pro Ultra Complete: design
  • Whopping suction power
  • Can climb tall thresholds
  • Mop extends by up to seven inches

Before we take a look at design of the X60 Pro Ultra's robot and dock, I should add that, right out of the box, this model has been extraordinarily reliable and more efficient than the majority other models I've reviewed these past few months.

Robot vacuum cleaners are among the easiest of smart home products to set up and this one was one of the most efficient. Yes, it arrived in a large box but because it comes with just three main parts — the robot, the dock and its clip-on ramp – I had it on the floor and ready to map my open-plan area within minutes. And, boy, did it map it well, even to the point of accurately pre-naming the four spaces it had located – Living Room, Dining Room, Kitchen and Hall — simply by noting the type of furnishings in each room.

This was a great start, in my opinion, because most robot vacs normally settle for generic terms like Room, 1, Room 2, etc. Of course, it's extremely simple to change the names of the rooms and just as easy to divide or merge them, but to have a robot that maps a living space so accurately from the off is a major plus.

I was also pleasantly surprised to discover the true meaning of this model's 'Complete' moniker because I spotted a huge array of accessories in the box. Most floor bots only come with a spare side brush, a spare dust bag and, occasionally, a tiny bottle of floor cleaning solution. But this model comes with three extra dust bags, a spare side brush, two dust box filters, three pairs of extra mop pads, a large one-quart (1L) bottle of cleaning solution and, rare for any robot, a spare pair of roller brushes. This is a major boon given that these are all items that one would normally need to purchase further down the line of ownership. Chapeau to Dreame.

Finally, if you purchase this bot today, sometime in 2027 you'll be able to use it in cahoots with Dreame's next sci-fi offering, a staircase-climbing robot module called the Cyber X. Unveiled at IFA Berlin, this amazingly clever slice of robotic tech functions as an autonomous carrier for the X60 so it can be transported up and down stairs. Can’t wait to see that in operation.

(Image credit: Future)Robot design

The Dreame X60 Pro Ultra is available in black or white and is a striking example of just how much robot vacuum design has advanced. From the outside, it remains recognisably circular, but almost every component here has been engineered to tackle many of the shortcomings that have made some robot cleaners largely frustrating to live with. In short, this is a robot designed not simply to clean the floor, but to get into more places, deal with more types of mess and spend less time getting stuck.

While not especially unique, the X60’s retractable LiDAR turret is one of its smartest design flourishes. Rather than permanently sitting proud of the robot, the turret can retract to help the machine achieve an incredibly low 3.50 inch (8.9cm) profile. That might not sound like much on paper, but it makes a substantial difference in practice, allowing the X60 to venture underneath beds, sofas, TV cabinets and any other furnishings with a minimum floor clearance of just 3.54 inches (9cm).

Dreame has also addressed another common robot-vacuum weakness: thresholds. My home doesn't have any thresholds but if it did, this is the model I'd choose because its two pop-out legs give it the ability to climb double-layered obstacles up to 3.93 inches (10cm) and single steps up to 2.04 inches (5.2cm) in height, giving it an impressive ability to move between areas of the home without requiring any makeshift ramps. It also means far fewer situations where you return home only to discover that your expensive robot has spent half the day stranded on the lip of a doorway.

(Image credit: Future)

The X60 Pro Ultra's class-leading figure of 42,000 Pascals of suction is colossal even by today's standards, and this is especially useful when engaging the robot's Large Particles Boost mode which gives the X60 Pro Ultra additional oomph when it encounters larger pieces of debris.

Combined with the unit's twin tangle-free rubber rollers and a retractable pressure plate that creates a semi-sealed vacuum chamber, this level of suction is particularly relevant for pet owners, where clumps of hair can present a much greater challenge than everyday dust. Moreover, the X60 Pro Ultra also features an obligatory spinning side brush which extends much further than the norm — up to four inches (12cm) — for better corner cleaning.

(Image credit: Future)

Many modern floor bots feature at least one mop that's able to extend by a couple inches when cleaning along skirting boards, in corners or around furniture legs. But this one takes mop extension to a whole new level of stretch by offering a reach of seven inches (18cm). When I first saw this in operation I thought a piece of furniture had ripped its arm out of a socket. The spinning mop pads, meanwhile, are thermally efficient and exert up to 15 Newtons of downward pressure, providing considerably more physical contact with the floor than a robot that merely drags damp pads behind it.

When it comes to robot vacuum cleaners, navigation and obstacle avoidance are arguably just as important as suction because all this fancy hardware is pretty pointless if the robot can’t find its way around the home.

(Image credit: Future)

The X60 Pro Ultra’s impressive navigation system is built around Dreame’s advanced VersaLift retractable hybrid LiDAR, which scans its surroundings using lazer beams to create detailed maps of the home and plan efficient cleaning routes. It’s also backed by AI-enhanced 3D Proactive Light Detection and intelligent obstacle recognition of around 320 object including, according to Dreame, 'tiny objects of 10mm'. We'll have to see about that.

On the battery front, this model is fitted with a 5,000mAh battery that recharges from empty to full in about 100 minutes and, according to Dreame, is capable of charging 25% of its capacity in about six minutes.

Score ref: 5/5

Dock design

The Dreame X60 Pro Ultra’s charging dock is as impressive as the robot itself. With its tall, sophisticated design and glossy facade replete with a subtle pinstripe effect, this is one robot dock you might not mind having centre stage. More importantly, it’s packed with a raft of technology that's designed to keep the X60 in readiness for action with minimal human intervention, aside from periodically discarding the dock's dust bag and servicing the two water tanks.

Speaking of which, you get the usual dual water tank combo comprising a 4.43 quarts (4.2L) fresh water tank and a smaller 3.17 quarts (3L) tank for the filthy stuff. Instead of tainting the sink area with stinky water, I always flush the contents of the dirty tank into the toilet bowl and then give the container a quick rinse under a tap. This model also comes with a liquid floor detergent dispenser situated next door to the dock's dust bag department.

The Dreame X60 Pro Ultra comes with one of the most stylish docks on the marketFutureBig water tanks for the mopping systemFutureA bigger-than-average dust bag with detergent dispenser on the leftFutureThis dock cleans itself without human interventionFuture

As to be expected in this day and age, the X60 Pro Ultra dock also takes care of all self-cleaning duties, including preparing the mop pads before use with scaldingly hot water. Since the mops themselves are thermally efficient enough to retain heat, the floor has a better chance of being properly cleaned. When the robot returns to the dock, the mop pads are washed with hot water — apparently 212F (100C) — before drying them using hot air to help prevent build-up of bacteria and nasty smells.

The dock is also fitted with a generous 3.38 quarts (3.2L) dust bag, which is larger than those fitted to many competing robot vacuum docks. This means that more debris can be stored before you need to replace the bag, reducing one of the few genuinely tedious jobs associated with owning a robot vacuum. The fact you get three spare bags with this specific 'Complete' model can be considered a major bonus.

Score ref: 5/5

  • Design score: 5/5
Dreame X60 Pro Ultra Complete: performance
  • Supreme vacuum power
  • Very good navigation
  • Average obstacle avoidance
Navigation performance

To give you some idea of how impressive Dreame's current crop of robot vacs are, I installed this model's stablemate – the extra-large Matrix10 Ultra – in our village hall where it has been running for the past eight months without any hiccups. The hall is a huge 130 square meters — two-thirds of a singles tennis court – and divided into various sections, including two toilet areas and a kitchen.

Where other robots I've installed in the hall have had issues where their LiDAR-written maps have been corrupted due to the vast size of the work space and presumably the reflective windows surrounding it, the Matrix10 Ultra has not had any issues at all. In fact, it continues to this day, having successfully completed 395.65 hours of reliable operation over an area of 25,018 square meters, equivalent to a massive 6.18 acres. Not bad for a robot vacuum cleaner!

Needless to say, this model's navigation is equally impressive in the way it has mapped my home, negotiated a lot of furniture including a cluttered dining area, and never once having got lost, trapped itself under furniture or snowplowed a loose rug.

Mind, its first mapping session did produce one amusing moment when it reached the area around our garden door. Since this model uses LiDAR to navigate, its laser beam had scanned beyond the open door towards the garden, thinking it had detected another room. All LiDAR robots do this but very few have the ability to scale a tall threshold. This one, of course, has excellent ability in that department so you can see where this is heading. In fact it was sheer luck that I happened to enter the room just as it was in the process making a beeline for the garden. You've got to laugh.

Another thing I should add is that I have had to raise the valance on the lounge sofa because the camera and laser system treats fabric valances as a solid obstacle. I personally don’t consider this a major issue because almost every LiDAR-governed robot I've reviewed has also refused to punch through a sofa or bed valance. To rectify this I now occasionally tuck the sofa's valance up out of the way so the X60 can clean underneath.

Score ref: 5/5

Obstacle avoidance

(Image credit: Future)

Having read the glowing headlines on Dreame's website about this robot avoiding objects as small 10mm (0.39 of an inch), I simply had to give it a go by placing some much smaller items than usual in its path, including a Hue remote, a phone cable, a small bottle of essential oil and a tiny lighter. I made sure I'd selected every option in its intelligent obstacle avoidance setting and crossed my fingers as it proceeded to travel from the hall to the kitchen.

While it deftly avoided all the objects I usually test robot vacs with — including the low circular dog chew, remote and phone cable — I was very surprised when it thundered straight over the bottle and lighter as if they weren't even there. While I don't consider this a major strike against the X60's obstacle avoidance — many other robot vacs have fared worse — I do think that if a company is going to state that their robot can avoid objects as tiny as 10mm, they really need to back it up with a level of real-world performance that matches the claim.

While the X60 is no match for the DJI ROMO when it comes to obstacle avoidance, I still think it deserves a respectable 4/5 because it has avoided everything else in its path for the last six weeks, and I have never once had to remove the roller brushes to extricate something it had tried to swallow. In short, I'd say this model's obstacle avoidance is better than average but with room for improvement.

Score ref: 4/5

Vacuuming

I've been using the Dreame X60 Pro Ultra for the past six weeks and have never had to think about it. I've never looked at a rug after hearing it perform a scheduled task and thought it needed another clean with a cordless stick vac, I've never had to untangle it from the tassels of a rug, and I’ve never had to extricate an item too big to swallow from its rubber rollers.

Nevertheless, needs must so I scattered my usual potpourri of obstreperous ingredients over the hardwood kitchen floor and a similar handful over a piece of carpet, and watched it do its thing.

FutureFuture

For a robot vac faced with far more detritus than it would ever come across in the real world (at least I'd like to think so), the Dreame X60 Pro Ultra made surprisingly short work of cleaning up the scattered cornflakes, muesli, oats and rice, swallowing up both the fine particles and larger ones with impressive consistency, even though it needed two passes to complete the task. The X60's 42,000Pa suction rating and Large Particles Boost Mode clearly paid dividends here, though I should add that this bot is louder in volume (up to to around 68dB) when cleaning in full-power mode.

I then applied the same test to a carpeted rug and it performed just as well though, again, it required two passes – one horizontal, the other vertical – to fulfil the task. Yes, there were a few small flakes left behind on the periphery but that's because they had been flung beyond the working zone I had previously programmed.

Score ref: 4.5/5

Mopping performance

(Image credit: Future)

As I've stated umpteen times before, I'm no fan of robots that also mop and would much rather have a vacuum-only robot with a huge dustbin in its dock. For mopping I generally prefer sticking to my Roborock F25 Ultra wet-and-dry vac or use a paper towel to wipe up a small spill of milk.

However I can see the appeal of having a robot for hard floor-cleaning duties if it mops practically every day. And this model excels at just that, partly because of the incredible reach of its extendable mop that genuinely cleans to the edge, in corners and around table legs, and partly because its clever blue Proactive Light Dirt Detection system does seem to spot stains better than other models I've tested.

Anyway, for my extreme kitchen test I accidentally-on-purpose spilt a glass of milk and programmed the X60 to run a zone clean. After about five minutes of mop preparation, including heating the pads using hot water, it trundled over and mopped up half the milk before returning to the dock. I thought that was that until I realized it was having its mops washed in readiness for the second run I had previously programmed.

I'd say the final results were perfectly acceptable given that I would never command a robot to mop up a spill when I can perform the task a thousand times quicker with some paper towels.

The main take away here is that its day-to-day performance has definitely been a cut above many of its competitors and there's no denying the practicality of the robot's extendable mop arm which really does work wonders.

Score ref: 4.5/5

Dock performance

I have nothing but good things to say about the X60 Pro Ultra's dock. Yes, it's a pretty large item to have in a small space but, on the plus side, I think its reflective pin-striped glass-like facade is one of the most attractive finishes I've seen since the Roborock 10R.

From a functional point of view, this dock does everything from emptying the robot's dust bin and servicing the robot’s mop system with hot water, washing the mops and then drying them, to self cleaning its own mop tray at the touch of a button on the app.

Only once did the dock's suction not correctly empty the contents of the robot's bin after a full house clean, and this was because I had activated the Hair Compression setting in the app. I'm not sure how this function works but the robot's bin was so tightly clumped with loads of winter-shed hair from my two labradors that the contents refused to budge when the dock's suction kicked in. Thankfully I've had no repeats of this since switching off the Hair Compression setting and, as a result, I am not losing any sleep over it.

Score ref: 5/5

  • Performance score: 4.5/5
Dreame X60 Pro Ultra Complete review: app functionality
  • Extremely comprehensive
  • Brilliant for tech nerds, not so much for luddites
  • Encourages a lot of experimentation

The Dreame X60 Pro Ultra’s Dreamehome app is extraordinarily well featured, giving you an almost ridiculous level of control over what the robot does, when it does it and how it cleans each area of your home. The problem is that it can initially feel like you’ve been handed the controls to an airliner.

As per usual, once the X60 has mapped your home, the app presents a detailed map that lets you merge or divide individual rooms, define cleaning zones and set no-go areas and virtual barriers. You can specify whether particular areas should be vacuumed, mopped or given both treatments, and adjust cleaning intensity according to the room or floor type.

(Image credit: Future)

There are also extensive options for scheduling and short-cut tasks, along with a myriad of settings for suction power, water usage, mop behavior, carpet type, floor direction, obstacle crossing, obstacle avoidance, even if you want pet hair in the robot's bin to be compressed.

The sheer depth of the Dreamehome app is undeniably impressive, but it does come with a steep learning curve that encourages a lot of experimentation. It can also take a while to work out where everything lives, particularly if you’re the sort of person who prefers to press a couple of buttons and get on with more important things. Nevertheless, once you’ve mastered this app, it becomes one of the X60 Pro Ultra’s biggest strengths.

  • App functionality score: 4/5
Should you buy the Dreame X60 Pro Ultra Complete?Dreame X60 Pro Ultra Complete: score card

Section

Notes

Score

Value for money

While in the premium bracket, I think the Dreame X60 Pro Ultra Complete is fair value for money, especially given the on-board tech and huge amount of included spares.

4.5/5

Design

Slick, sophisticated and impressively engineered, the X60 Pro Ultra and its glossy dock ooze premium quality.

5/5

Performance

The X60 Pro Ultra delivers outstanding vacuum performance and better-than-average mopping, but its obstacle avoidance system could be better.

4.5/5

App functionality

The Dreamehome app is impressively comprehensive, offering deep control over all aspects, but its sheer number of settings can feel overwhelming.

4/5

Average rating

4.5/5

Buy it if

You want great vacuum performance

Powerful 42,000Pa suction tackles stubborn household detritus with aplomb

You have hairy pets

This model has several functions designed with pets in mind

You have low furniture and high thresholds

The X60 cleans beneath very low furniture and climbs most thresholds

Don't buy it if

Your home is cluttered with tiny toys

The X60 most likely won’t evade small toys like Lego bricks

You're not very tech savvy

The X60 Pro Ultra's surfeit of features may overwhelm less technical users

Your home is on the small side

This model would be overkill, as would the large dock

How I tested the Dreame X60 Pro Ultra Complete

TechRadar takes its product testing very seriously so I lived with the X60 Pro Ultra for a few weeks having set up various weekly schedules and routines to gauge how efficiently it performed the tasks it was designed for. I also monitored the amount of times I had to rescue it from entanglement or some other anomaly but, aside from some minor obstacle avoidance issues, the X60 functioned reliably throughout its trial.

If only to prove its capability for cleaning up heavier doses of debris and mopping up spills, I also performed a few extreme tests that no robot should have to endure in its lifetime.

First reviewed September 2026.

Categories: Reviews

I wasn’t a fan of Silent Hill f, but Silent Hill: Townfall has made me believe in the horror series again

TechRadar Reviews - Mon, 09/21/2026 - 02:00

Traditionally set in North America, the Silent Hill series has been known to stray beyond the continent on occasion, most notably with the recent Silent Hill f, which takes place in sixties Japan.

Review info

Platform reviewed: PS5
Available on: PS5, PC
Release date: September 24, 2026

With Townfall, we’re headed to nineties Scotland, but that’s not the only change: we also get a new perspective — in more ways than one.

Not only is the game in first-person, rather than third-person, but it's developed by a series newcomer, Screen Burn Interactive, formerly known as No Code. This small Scottish outfit doesn’t exactly have a long resume, but it's already proved itself with its two previous outings. 2017’s Stories Untold was an interesting, modern take on the text adventure, while 2019’s Observation, another first-person horror, won the Bafta for Best British Game in 2020.

Now the team brings its Caledonian spirit to bear on Konami’s flagship horror franchise, but does the new locale and camera angle represent another step in the right direction for a series keen on extending its recent purple patch?

Everybody’s aff to the rapture

(Image credit: Konami)

We open in typical horror story fashion: a man crawls out of the water onto a dock, not knowing where he is or where he came from.

Best bit

(Image credit: Konami)

Sneaking around the streets of St. Amelia. Its layout is ripe for creating your own paths to avoid enemies, and escaping their clutches by running down back alleys and hiding in cupboards is always a thrill. Plus, you get to explore a town that’s been lovingly and realistically rendered, with homes, shops, and features that offer a glimpse back to a simpler time.

This man is Simon Ordell, wearing an outfit almost identical to Travis Grady’s from 2007’s Silent Hill: Origins, and denoting his everyman-ness. As you make your way up from the harbour, a cutscene plays, and a tarp blows away from a sign, revealing the town’s name: St. Amelia

And so the game proper begins, as you make your way through the seemingly abandoned town to find out what’s going on. Along the way, you’ll take control of two additional characters besides Simon — Zoe and Richard — and the plot unfolds gradually to reveal the trio’s connection to one another.

(Image credit: Konami)

The first thing that struck me as I paced through the streets was the fantastic art direction. As expected from a Scottish team, Screen Burn has nailed the feel of a small Scottish town.

St. Amelia is lovingly crafted and perfectly captures its mid-nineties period, containing plenty of features recognizable to those this side of the pond, from period-correct storefronts and pebble-dashed houses to public telephone booths and post boxes.

Virtually every frame looks cinematic (there’s even a letterbox mode enabled by default). The perennial fog is, of course, present and correct here, and looks better and moodier than ever. Hues of white, red, and blue are prominent throughout as well, and look eerily beautiful as they shine through the mist and are backlit by streetlamps. This is a game made for screenshotting, although unfortunately it doesn’t have a native photo mode.

I played through the game in Performance mode, as is often my preference, and I couldn’t discern any visual downgrade from Quality mode. Naturally, though, Performance mode offered a much better frame rate, and I only encountered one section where things got a little choppy, but this was brief and far from ruinous.

(Image credit: Konami)

Complementing the visuals is the score, another feature that’s always stood out in Silent Hill titles. Here, though, regular series composer and sound designer Akira Yamaoka is, for once, not involved. Instead, the honors go to Pilotpriest, who’s done a fantastic job of replicating the off-kilter sounds and melancholic melodies fans have come to know and love, while adding a modern twist.

Pieces are more sparse and muted than before, often with heavy doses of reverb. They match the tone of the gameplay brilliantly, and compositions open up during cutscenes when some emotional weight needs carrying.

Unfortunately, the characters’ facial animations are less capable at this. They’re often stilted, which can work when they seem detached and dejected, but they fail to sell terror or emotional breakdowns when required.

This is doubly a shame since it lets down the largely great performances of the voice actors, of which Kezia Burrows’ Zoe is worthy of highlighting. She has a greater range of traits and emotions to convey than the other two, and she does so with aplomb.

Another disappointing aspect of the game’s design is the monsters — this for a series renowned for its strikingly original creations. Virtually every one is some kind of faceless alabaster humanoid with no details of note, and some are mere rehashes of past favorites, such as the fleshy straight-jacketed figure, although this time it has a plank driven through its head.

Less attention has been paid to their symbolism, too: there are suggestions that they reflect aspects of the inner turmoil of the main characters, à la most Silent Hill monsters, but there's little about their design that shows this in an interesting way.

Monster hunting

(Image credit: Konami)

Looks aside, though, the monsters are more dangerous than ever. There are a handful of basic pawns, such as those that wander around slowly, and the aforementioned straight-jacketed plank heads that move much faster and more erratically and are equally troublesome.

If either catches you, you’ll have a basic button-mashing QTE to avoid them if you have enough health, but if not, it’ll be instant death. In certain sections, a larger monster appears with blobs on its back, which is unkillable as far as I could tell. There's no chance to QTE your way out of its grip if it catches you, either.

Sneaking around enemies, therefore, can be a tense and terrifying experience, accompanied by a huge sense of relief when you succeed. Often, the environmental design expertly facilitates this stealth gameplay. The outside sections in particular are laden with cut-throughs and hiding places, and more impressive is the fact that this design is so firmly planted in the real world.

You’ll be sneaking around abandoned cars and peeking out over low walls, scooting down narrow back alleys and distracting enemies with bottles or radios. There’s a surprising degree of player freedom that makes these sections more satisfying to play through than your typical survival horror fare.

(Image credit: Konami)

What also helps is the excellent player movement. All three move in the same way, which is to say they’re responsive and agile, as well as being reasonably fast when sprinting, although this is no arena shooter — but then again, I wouldn’t want it any other way in a horror game. There’s also an option to use motion controls for aiming, with fast and precise movements, and it is my preferred method.

There’s a peek mechanic, too, which again is very useful. It may be lifted straight from classic first-person horror games, most notably Alien: Isolation, but it gives you a great deal of freedom to not just strafe laterally, but also to peer up over barriers or down over ledges, whether standing or crouched.

To detect threats more easily, Simon picks up a handheld TV (or CRTV) early on that can tune into enemy locations. They’re rendered in silhouette against a red background, serving as the game’s ‘detective mode’. This gives you a real advantage, but its screen is just obscure enough to avoid you using it the whole time.

You also lose focus on your surroundings while equipped, again preventing you from relying on it wholesale. Keeping track of multiple enemies can be hard as well, since you have to toggle between them one at a time, and those long passed or on a different level remain in the CRTV’s memory.

(Image credit: Konami)

Zoe, on the other hand, is saddled with a pager, a far less effective item since it doesn’t directly reveal enemy movements. Instead, bars around the sides fill up to show their approximate direction and proximity. Both gadgets, though, are effective at grounding Townfall in the real world. At certain points, the CRTV can be tuned to show recorded messages that help develop the story or provide hints. The pager, meanwhile, receives mission- and story-related communication.

This grounding is something the game as a whole does well. From the environments and puzzles, right down to the save system, which has always been a quirky thing in Silent Hill games. Usually, it’s something obscure and surreal, such as interacting with a well or a red square on a wall, but here you use landlines (no mobile phones in St. Amelia 1996) and dial 100 — the in-game number for the coastguard.

The map screen is as helpful and skeuomorphic as ever. Scrawls in red marker pen appear to show rooms you’ve entered, locked doors, and story clues. You can also zoom and pan around it with ease.

When the sneaking goes wrong, you aren’t completely defenceless. You don’t exactly have a military arsenal at your disposal, but some humble series staples are here, including wooden planks and metal pipes. They degrade this time, though, so they won’t last long. Firepower comes later, but ammo is scarce, making the game’s intentions for a stealthy play style clear.

(Image credit: Konami)

All this isn’t to say the weapons are useless. On the contrary, they’re very effective, and just the right amount of difficult to use. Melee combat is a basic affair, with one button for attack and one for block, but a lot of enemies can be disposed of quite quickly. The revolver and shotgun are even more effective, as you would imagine, but reload times are slow. All weapons feel impactful and satisfying to use, too, and the controls aren’t awkward.

Healing items are more generously distributed. There’s gauze for minor wounds and first aid kits for major ones. You can also combine alcohol with the former for a larger heal, while empty IV bags can be combined with IV fluids to automatically revive you if you die.

Aside from combat and sneaking, you’ll of course be solving puzzles. These are more ingenious than past efforts, and expertly combine that aforementioned verisimilitude with the series’ penchant for the weird.

One of my favorites had me reading out patient charts as Zoe to an aggressively condescending doctor, chastising her and me if I gave the wrong information. I then needed to find medicines dotted around the medical center, beginning yet another monster-avoidance section, which was as tense and as exciting as those in the streets of St. Amelia.

There are plenty of documents and computer emails to read and collect, providing clues to puzzles. There’s also a handy mechanic where you can hold a button to bring up the relevant clue while interacting with a puzzle, although, bizarrely, this is limited to only a few occasions.

Nothing personal

(Image credit: Konami)

While I certainly had a good time with Townfall, certain sections drag on a little too long. But on the whole, the game does well to vary the environments and puzzles (the enemies less so) throughout to keep you hooked.

I didn’t find normal difficulty too troubling: the puzzles are pitched just right, and those I spent a long time figuring out weren’t frustrating or unfair; in fact, they’re proved more satisfying to solve than the series’ typical offerings.

Sneaking and combat, on the other hand, are more challenging. Enemies can come upon you quickly, and since there can be long stretches before you reach a save point, you can find yourself trudging back through the same section if you perish. But mostly, their presence adds real stakes and rewards you with a sense of achievement once you make it past them.

(Image credit: Future)

It took me just over 20 hours to complete a single playthrough, and that was at a gentle pace. There’s little beyond the main objectives at hand to seek out, aside from some mysterious coded postcards that’ll have fans scrabbling to decipher, as well as hidden phone numbers to find. There are also unlockable outfits and weapons, and five different endings to get.

Townfall isn’t particularly scary. There’s the occasional jump scare, but it doesn’t rely on them for cheap thrills. The game is a slow burn, with plenty of quiet, contemplative moments as you explore your surroundings. As with many Silent Hill games, the horror is more psychological.

But herein lies a problem. While the story is commendable for sustaining the mystery for as long as possible, there’s a lack of character exploration, contrary to many other stories in the franchise.

The characters’ dialogue is mostly cryptic, so you never get much of a grasp on their thoughts and feelings until the end — and even then, there are still plenty of questions left unanswered, as they should be. But the three of them are by turns confused and forlorn throughout.

This mixture works to conjure that strange, uncanny tone the series is known for, but it also means the trio fails to elicit the same level of emotional investment garnered by past protagonists, such as Harry and Heather Mason, James Sunderland, and Mary.

(Image credit: Konami)

Social commentary seems to be Townfall’s primary concern: the main theme is one of corporate negligence and its devastating impact on a community, which is certainly relevant in today’s world. And it’s true that once the three collide and everything comes to a head, it starts to resonate emotionally. But this is a long time coming, and Zoe ultimately feels underserved by the story’s conclusion, a shame given the aforementioned excellence of her actor’s performance.

It’s entirely possible, though, that other endings will give her a larger role than the one I reached, although I have no idea how these are achieved yet.

Ultimately, I found Townfall less impactful than Silent Hill 2 or Shattered Memories. It won't haunt me for as long as those entries, but it’s an intriguing journey nonetheless, with mysteries that remain after completion to keep fans busy with their theories.

No doubt some will also see Townfall as departing too far from the Silent Hill formula, a debate that’s already begun. But to my mind, the new setting and perspective fit the mold perfectly, so despite a few reservations, it still marks another triumphant reimagining of the series.

Should you play Silent Hill: Townfall?Play it if…

You love sneaking and puzzling
Sneaking around enemies is often thrilling, and the memorable puzzles mix realism with the series’ unhinged tropes masterfully.

You want great art direction
Screen Burn has managed to haul a small Scottish fishing village into the world of Silent Hill beautifully. It looks and sounds fantastic.

Don't play it if…

You want the best monsters
The monsters are certainly less memorable this time round, a shame given the series’ pedigree in this area.

You want more emotion from your characters
Mostly, the three protagonists are quite stilted in their tone. The botoxed facial animations don’t help, either.

Accessibility features

Compared to other modern releases, Townfall’s accessibility features are a little lacking. There are no content filters for blood and gore, and visual assists for color and contrast, and the like, are also missing. You can toggle subtitles and closed captions separately, though, and you can adjust the opacity of their backgrounds.

There are three difficulty modes to choose from: Story, which reduces the threat posed by enemies; Normal, which is how the developers intend the game to be played; and Nightmare, which increases enemy power and makes your flashlight detectable by them.

Puzzle difficulty is handled separately, although there are only two modes for this, with the only difference being red highlights of salient text clues.

How I reviewed Silent Hill: Townfall

(Image credit: Konami)

I played Townfall for just over 20 hours, completing the game once through on normal difficulty. I also toggled the puzzle difficulty between Normal and Hinted modes at various points.

I played the game on a standard PS5, largely in Performance mode, although I also tested Quality mode for a time, too. I used a Lenovo Legion R27qe monitor and the Skullcandy Crusher PLYR 720 headset for audio.

I’m a long-time fan of the Silent Hill series and have played many games in the series, including the recent Silent Hill f and the 2024 remake of Silent Hill 2. The original Silent Hill 2 and Silent Hill: Shattered Memories rank among the best horror games of all time, in my mind.

First reviewed September 2026

Categories: Reviews

DBrand knocked it out of the park with its Nintendo Switch 2 Killswitch protective gear, and after testing it, I might just keep it on my console forever

TechRadar Reviews - Sun, 09/20/2026 - 15:00
DBrand Killswitch Nintendo Switch 2 review

The DBrand Killswitch for Nintendo Switch 2 is the ultimate protective solution for your shiny new hybrid system. Rather than being a traditional carrying case, it acts as a permanent protective shell for your system, keeping it shielded at all times. I’ve spent a few days gaming with the Killswitch for Switch 2 now, so here’s how I’d rate it.

First of all, I have to applaud the ease of setup. The main case is incredibly easy to pop on. I just had to remove a couple of adhesive strips on the case, push it onto my system, and bam — it was done. The Joy-Con 2 controllers also slot into individual cases, and there’s a protective cover for the system’s kickstand that sticks on seamlessly.

The case has gaps for all of the crucial elements like volume controls, the power button, the USB-C slots, and vents. I also appreciated how slim the protective case felt — sure, it adds a bit of depth, but it doesn’t make the console feel too broad.

Like a lot of the best Nintendo Switch 2 accessories, the Killswitch feels very high in quality, and plenty durable. It also offers great ergonomics, with the textured case and its curved feel making the system incredibly comfortable to use in handheld mode. I tried playing a wide variety of games, including Mario Kart World and Yoshi and the Mysterious Book, and whether I was turning tight corners or exploring a mystical area, the system never felt unwieldy or chunky.

Although the case adds some bulk to the Switch 2, you’re still easily able to use it in docked mode. That’s because the Killswitch comes with a dock adapter. Just place it onto the Switch 2’s usual dock, and you’re good to go. It has 4K 60Hz passthrough, so you can still enjoy the best Nintendo Switch 2 games without compromise, meaning it serves as a super-convenient solution.

(Image credit: Future)

You get a few extras depending on the Killswitch variant that you select. I went for the Travel pack, which also includes stick grips and a travel cover. The grips push on without difficulty, and they have a tactile, secure feel that makes gaming feel as easy as ever. The travel cover is a neat inclusion too, and has ten slots for Nintendo Switch 2 or Nintendo Switch games.

So, it’s safe to say that I’m a big fan of the Killswitch for Switch 2. But there’s one thing worth considering. It’s pretty pricey. The Killswitch starts at just under $60 for the Essential package, which comes with the main case, a skin, and the dock adapter. But if you get the Everything variant, which also adds the stick grips, travel cover, two screen protectors, and a Joy-Con 2 controller holder, it's just under $155. That’s an awful lot to pay for the fully protective package any way you shake it.

One other minor thing worth noting is that the protective case and stick grips are a little susceptible to picking up dust and fibers. This didn’t bother me all too much, but I did realize the grips were a little grimy after an hour's worth of use. Not a dealbreaker, but worth pointing out.

But I’ll be clear. The DBrand Killswitch for Switch 2 is an excellent protective option for your console, and I won’t be taking it off my system any time soon. If you want excellent durability, seamless setup, and flexibility for handheld and docked play, it’s a top-class choice.

(Image credit: Future)DBrand Killswitch Nintendo Switch 2 review: price & release date
  • Prices start at $59.95
  • Released in June 2025

The price you’ll pay for the Nintendo Switch 2 variant of the Killswitch will vary depending on the model you select. Typically, it’s $59.95 for the Essential pack, $99.85 for the Travel option, $134.80 for the Ultra variant, and $154.75 for the Everything package. I have seen the Killswitch go on sale at times, though, so it’s worth checking DBrand’s site for discounts. The Killswitch for Switch 2 was released in June 2025.

(Image credit: Future)Should I buy the DBrand Killswitch Nintendo Switch 2?Buy it if…

You want a premium protection without compromise
If you want one of the best protective solutions on the market, then the DBrand Killswitch is easily one of my top recommendations. It’s highly durable and easy to set up, but it also feels amazing in-use and has a dock adapter, meaning you don’t have to compromise when shielding your Switch 2.

You want flexibility for handheld and docked play
Although the Killswitch adds a bit of bulk to your Switch 2, the included dock adapter makes it easy to seamlessly switch between handheld and TV mode play.

Don’t buy it if…

You’re on a budget
If you’re looking for a cheaper solution then the Killswitch may not be ideal, given that the cheapest package will set you back almost $60. If you’re happy with a standard case, then a good budget pick is the Turtle Beach PlayTrek Travel Case for Nintendo Switch 2.

You want a traditional case
If you’re looking for a traditional carrying case, then you may want to look elsewhere. My favorite all-in-one option (which will house your console, dock, controllers, and more) is the official Nintendo Switch 2 All-In-One Carrying Case.

DBrand Killswitch Nintendo Switch 2 review: also consider

Nintendo Switch 2 Carrying Case & Screen Protector
If you want a cheaper screen protector and case combo, then Nintendo’s official option is a solid choice for when you’re on the go. It isn’t going to give you the top-tier protection of the Killswitch casing, but if you’re predominantly playing handheld and want an affordable package, I’d recommend picking it up. Read my full Nintendo Switch 2 Carrying Case & Screen Protector review.

(Image credit: Future)How I tested the DBrand Killswitch Nintendo Switch 2
  • Spent a week testing the Travel bundle
  • Made use of all the accessories
  • One of a vast number of Switch 2 accessories I’ve tested

I spent a week testing the DBrand Killswitch for Nintendo Switch 2, and kept it on my system everywhere I went.

I tried dropping my system from a controlled height to judge its durability, and made use of all of the accessories in the Travel package, including the dock adapter, game card holder, and stick grips.

More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed a vast amount of Switch 2 accessories, from cases like the Hori Adventure Pack to controllers such as the Turtle Beach Rematch Wireless Controller, and have been a Switch 2 owner from day one.

Categories: Reviews

I tested the Samsung R95H RGB TV — and while OLED is still the top dog, this TV shows that RGB mini-LED has massive potential

TechRadar Reviews - Sun, 09/20/2026 - 13:00
Samsung R95H review: Two-minute review

Samsung’s Micro RGB lineup is its first foray into the RGB TV market, and the Samsung R95H is the flagship model in that lineup. It's an impressive TV, and a very strong performer in key areas such as movies and gaming; and, while I don’t think it quite beats the best OLED TVs, it's a good showcase for how RGB models are shaping up against the best TVs in general.

The R95H delivers great overall picture quality, with vibrant colors which also look accurate in most scenes, as well as strong contrast and refined detail. While its black levels don’t quite match those of OLED, they’re still very rich for a backlit TV. It’s not all smooth sailing, as the R95H can get overly bright, especially in Movie mode, and it’s not immune to blooming in very dark scenes. Still, its overall picture quality is of a high standard.

Sound quality on the R95H is solid for the most part, with good accuracy and detail, as well as commendable bass and solid mid-range tones. Speech is clear in most scenes I watched, and there is some sense of surround. However, the soundstage could be wider, and the volume does need to be pushed sometimes, so I’d recommend one of the best soundbars for those wanting a more of a home-theater experience.

The R95H is up there with the best gaming TVs, offering four fully-specced HDMI 2.1 ports along with a low 11.7ms input lag time for smooth gaming performance. There are tons of cloud gaming options available too, and Samsung's Gaming Hub is still an excellent feature. While its Game picture mode could be more accurate, this is still an excellent gaming TV.

Tizen is a good smart TV platform, giving you access to all the major streaming apps, as well as a plethora of AI tools for picture, sound and general usage. Its menus are generally well laid out and easy to navigate, and, while there are some frustrations, such as autoplaying Samsung TV Plus and large banner ads on the home screen, these don’t detract too much from what is a solid smart TV interface.

The R95H is a premium TV, with the 65-inch model priced at $2,799 / £2,899 / AU$4,999. This puts it at a similar price level to flagship OLED TVs, and while I don’t think it quite tops OLED, it shows how rapidly RGB tech is advancing.

A quick note on the images in this review: the TV may appear to have a red tint, but this is caused by the camera reacting to the anti-glare screen, and it not something that's discernible when viewing content on the TV.

Samsung R95H review: Prices & release date

The R95H delivers good brightness and detail that gives pictures a 3D-like effect (Image credit: Future)
  • Release date: July 2026
  • 65-inch: $3,199 / £3,099 / AU$5,299
  • 75-inch: $4,499 / £3,999 / AU$7,999
  • 85-inch: $5,499 / £5,899 / AU$9,999

The Samsung R95H is the flagship model in Samsung’s Micro RGB TV lineup, sitting above the Samsung R85H. It’s available in 65, 75 and 85-inch sizes. The launch price for the 65-inch model I tested is $3,199 / £3,099 / AU$5,299, putting it at the premium end of the market.

Since its launch in July 2026, prices have dropped across all sizes in both the US and UK. The 65-inch has dropped to $2,799 / £2,899, putting it in similar price brackets to Samsung’s flagship S95H / S99H OLED (priced at $2,899 / £2,899) and LG’s flagship G6 OLED ($2,699 / £2,999). In the US and UK the R95H is cheaper than Sony’s rival RGB, the Bravia 9 II, which is priced at $3,499 / £3,499 / AU$5,995.

Samsung R95H review: Specs

Screen type

Micro RGB

Refresh rate

Up to 165Hz

HDR support

HDR10+, HDR10, HLG

Audio support

Dolby Atmos

Smart TV

Tizen

HDMI ports

4 x HDMI 2.1

Tuner (US)

ATSC 3.0

Samsung R95H review: Benchmark results @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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper *, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper *:before, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper *:after, #fv-chart-1789048128029-vy87k5ujr-slideshow *, #fv-chart-1789048128029-vy87k5ujr-slideshow *:before, #fv-chart-1789048128029-vy87k5ujr-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper, #fv-chart-1789048128029-vy87k5ujr-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-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-1789048128029-vy87k5ujr-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-1789048128029-vy87k5ujr-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-1789048128029-vy87k5ujr-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1789048128029-vy87k5ujr-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-1789048128029-vy87k5ujr-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-1789048128029-vy87k5ujr-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-1789048128029-vy87k5ujr-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-row,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stacked-product,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-label,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-container,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-cluster {width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-label-space {display: none !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-chart-title {padding: 0 8px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .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-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo,#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1789048128029-vy87k5ujr-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}[{"@context": "https://schema.org","@type": "Dataset","name": "Brightness measurements","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-09-10T13:48:48.031Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung R95H","Samsung S95H/S99H","Sony Bravia 7 II","HDR Filmmaker Mode (10% window)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (Fullscreen)","SDR Filmmaker Mode (Fullscreen)","SDR Standard Mode (Fullscreen)","HDR Filmmaker","HDR Standard","SDR Filmmaker","SDR Standard","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung R95H – HDR Filmmaker Mode (10% window)","value": 1977,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Filmmaker Mode (Fullscreen)","value": 612,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – HDR Filmmaker Mode (10% window)","value": 2739,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – HDR Filmmaker Mode (Fullscreen)","value": 449,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Filmmaker Mode (10% window)","value": 1114,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Filmmaker Mode (Fullscreen)","value": 829,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Standard Mode (10% window)","value": 2066,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Standard Mode (Fullscreen)","value": 647,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – HDR Standard Mode (10% window)","value": 2831,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – HDR Standard Mode (Fullscreen)","value": 463,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Standard Mode (10% window)","value": 1295,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Standard Mode (Fullscreen)","value": 788,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Filmmaker Mode (10% window)","value": 115,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Filmmaker Mode (Fullscreen)","value": 185,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – SDR Filmmaker Mode (10% window)","value": 220,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – SDR Filmmaker Mode (Fullscreen)","value": 219,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Filmmaker Mode (10% window)","value": 90,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Filmmaker Mode (Fullscreen)","value": 94,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Standard Mode (10% window)","value": 413,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Standard Mode (Fullscreen)","value": 187,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – SDR Standard Mode (10% window)","value": 229,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – SDR Standard Mode (Fullscreen)","value": 229,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Standard Mode (10% window)","value": 608,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Standard Mode (Fullscreen)","value": 476,"unitText": "nits"}]},{"@context": "https://schema.org","@type": "Dataset","name": "HDR color gamut","description": "Closer to 100% is better. Taken using a colorimeter and test pattern generator.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-10T13:48:48.031Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung R95H","Samsung S95H/S99H","Sony Bravia 7 II","UHDA-P3","BT.2020","HDR Filmmaker","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung R95H – UHDA-P3","value": 148,"unitText": ""},{"@type": "PropertyValue","name": "Samsung R95H – BT.2020","value": 94.1,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95H/S99H – UHDA-P3","value": 99.9,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95H/S99H – BT.2020","value": 89.2,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 7 II – UHDA-P3","value": 98.6,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 7 II – BT.2020","value": 89.6,"unitText": ""}]},{"@context": "https://schema.org","@type": "Dataset","name": "Picture accuracy","description": "A lower score is better. Taken using a colorimeter and test pattern generator.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-10T13:48:48.031Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung R95H","Samsung S95H/S99H","Sony Bravia 7 II","Delta-E","SDR Delta-E","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung R95H – Delta-E","value": 3.7,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95H/S99H – Delta-E","value": 1.6,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 7 II – Delta-E","value": 6.5,"unitText": ""}]},{"@context": "https://schema.org","@type": "Dataset","name": "Input lag","description": "Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-10T13:48:48.031Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung R95H","Samsung S95H/S99H","Sony Bravia 7 II","4K 60Hz","1080p 120Hz","HDR Filmmaker","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung R95H – 4K 60Hz","value": 11.7,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung R95H – 1080p 120Hz","value": 9.4,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – 4K 60Hz","value": 9.5,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung S95H/S99H – 1080p 120Hz","value": 5,"unitText": "ms"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – 4K 60Hz","value": 10.4,"unitText": "ms"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – 1080p 120Hz","value": 5.7,"unitText": "ms"}]}]Previous1 / 4NextBrightness measurementsHDR FilmmakerHDR StandardSDR FilmmakerSDR StandardSamsung R95HHDR Filmmaker Mode (10% window)1977HDR Filmmaker Mode (Fullscreen)612Samsung S95H/S99HHDR Filmmaker Mode (10% window)2739HDR Filmmaker Mode (Fullscreen)449Sony Bravia 7 IIHDR Filmmaker Mode (10% window)1114HDR Filmmaker Mode (Fullscreen)82907501,5002,2503,000nitsHDR Filmmaker DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Samsung R95H1977612Samsung S95H/S99H2739449Sony Bravia 7 II1114829Samsung R95HHDR Standard Mode (10% window)2066HDR Standard Mode (Fullscreen)647Samsung S95H/S99HHDR Standard Mode (10% window)2831HDR Standard Mode (Fullscreen)463Sony Bravia 7 IIHDR Standard Mode (10% window)1295HDR Standard Mode (Fullscreen)78807501,5002,2503,000nitsHDR Standard DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Samsung R95H2066647Samsung S95H/S99H2831463Sony Bravia 7 II1295788Samsung R95HSDR Filmmaker Mode (10% window)115SDR Filmmaker Mode (Fullscreen)185Samsung S95H/S99HSDR Filmmaker Mode (10% window)220SDR Filmmaker Mode (Fullscreen)219Sony Bravia 7 IISDR Filmmaker Mode (10% window)90SDR Filmmaker Mode (Fullscreen)94075150225300nitsSDR Filmmaker DataProductSDR Filmmaker Mode (10% window) (nits)SDR Filmmaker Mode (Fullscreen) (nits)Samsung R95H115185Samsung S95H/S99H220219Sony Bravia 7 II9094Samsung R95HSDR Standard Mode (10% window)413SDR Standard Mode (Fullscreen)187Samsung S95H/S99HSDR Standard Mode (10% window)229SDR Standard Mode (Fullscreen)229Sony Bravia 7 IISDR Standard Mode (10% window)608SDR Standard Mode (Fullscreen)4760200400600800nitsSDR Standard DataProductSDR Standard Mode (10% window) (nits)SDR Standard Mode (Fullscreen) (nits)Samsung R95H413187Samsung S95H/S99H229229Sony Bravia 7 II608476HDR color gamut

Closer to 100% is better. Taken using a colorimeter and test pattern generator.

Samsung R95HUHDA-P3148BT.202094.1Samsung S95H/S99HUHDA-P399.9BT.202089.2Sony Bravia 7 IIUHDA-P398.6BT.202089.6037.575112.5150HDR Filmmaker DataProductUHDA-P3 ()BT.2020 ()Samsung R95H14894.1Samsung S95H/S99H99.989.2Sony Bravia 7 II98.689.6Picture accuracy

A lower score is better. Taken using a colorimeter and test pattern generator.

SDR Delta-ESamsung R95H3.7Samsung S95H/S99H1.6Sony Bravia 7 II6.501234567SDR Delta-E DataProductValueSamsung R95H3.7Samsung S95H/S99H1.6Sony Bravia 7 II6.5Input lag

Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.

Samsung R95H4K 60Hz11.71080p 120Hz9.4Samsung S95H/S99H4K 60Hz9.51080p 120Hz5Sony Bravia 7 II4K 60Hz10.41080p 120Hz5.703.757.511.2515msHDR Filmmaker DataProduct4K 60Hz (ms)1080p 120Hz (ms)Samsung R95H11.79.4Samsung S95H/S99H9.55Sony Bravia 7 II10.45.7window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(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 (true) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var currentSlideIndex = 0;var slides = slideshowContainer.querySelectorAll('.fv-slide');var counter = slideshowContainer.querySelector('.fv-slide-counter');var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev');var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next');var dropdown = slideshowContainer.querySelector('.fv-slideshow-select');function updateControls(index) {if (counter) counter.textContent = (index + 1) + ' / ' + slides.length;if (dropdown) dropdown.value = index;if (prevBtn) {if (index === 0) prevBtn.classList.add('disabled');else prevBtn.classList.remove('disabled');}if (nextBtn) {if (index === slides.length - 1) nextBtn.classList.add('disabled');else nextBtn.classList.remove('disabled');}}function showSlide(index) {if (index < 0) return;if (index >= slides.length) return;currentSlideIndex = index;slides.forEach(function(slide, i) {slide.style.display = i === index ? 'block' : 'none';if (i === index) {var chartEl = slide.querySelector('.fv-chart-wrapper');if (chartEl && window.fvAnimateCharts) {window.fvAnimateCharts(chartEl);}}});updateControls(currentSlideIndex);}if (prevBtn) {prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); });}if (nextBtn) {nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); });}if (dropdown) {dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); });}updateControls(currentSlideIndex);if (slides.length > 0) {var firstChart = slides[0].querySelector('.fv-chart-wrapper');if (firstChart && window.fvAnimateCharts) {setTimeout(function() { window.fvAnimateCharts(firstChart); }, 100);}}}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1789048128029-vy87k5ujr', true); });} else {initialize('fv-chart-1789048128029-vy87k5ujr', true);}})();

The above EOTF graphs show the accuracy of the Samsung R95H for hitting different HDR brightness levels in grayscale. The closer to the yellow line, the more accurate a TV is. As with all our tests, these results are out of the box, without calibration, to demonstrate the performance most people will see. As you can see, the R95H did very well on all three target tests. (Image credit: Future)

Spectral power distribution refers to the intensity of light that a source will display at various wavelengths of color. It can reveal how accurate a source can show color at different light levels, and can be instructive to understand how a TV is handling color. (Image credit: Future)Samsung R95H review: Features

The R95H is equipped with four HDMI 2.1 ports (Image credit: Future)
  • RGB backlight
  • Glare-free screen
  • Samsung Vision AI and Tizen smart TV platform

The R95H uses Samsung’s ‘Micro RGB’ backlight technology, which uses LEDs that are smaller than mini-LEDs, and which consist of red, green and blue LEDs (hence RGB) rather than the traditional white in order to deliver bolder colors and brightness.

It comes equipped with the Samsung Micro RGB AI Engine Pro processor, which has features such as Micro RGB Precision Color, 4K AI Upscaling Pro and Color Booster Pro. The TV itself also has a Glare Free screen, an anti-reflection matte screen that has featured in several of Samsung's TVs, including the Samsung S95H / S99H.

In terms of HDR support, the R95H supports HDR10+, but as usual, there is no support for Dolby Vision.

For gaming, the R95H has four HDMI 2.1 ports, which support 4K 165Hz, full VRR including Freesync and G-Sync, ALLM and HDR10+ gaming. It also supports cloud gaming apps from the likes of Xbox and Nvidia GeForce Now. The R95H is also compatible with the Wireless One Connect Box, which can be used in tandem with the TV’s built-in ports, meaning there are a potential eight HDMI 2.1 ports on offer.

The R95H has a 4.2.2 channel speaker array, totaling 70W of power. Supported sound features include Object Tracking Sound+ (OTS+), Active Voice Amplifier Pro, Adaptive Sound Pro and AI Sound Controller Pro. The R95H supports Dolby Atmos, but not DTS:X.

The R95H’s smart TV platform is Samsung’s own One UI Tizen, which supports major streaming apps including Netflix and Prime Video, and for those in the UK it supports all major apps including BBC iPlayer and ITVX. There's also support for Samsung Vision AI, which enables AI features such as AI Soccer Mode Pro and Generative Wallpaper.

  • Feature score: 5 / 5
Samsung R95H review: Picture quality The R95H's color reproduction is excellent, shown in the bright highlights in moves like The Super Mario Galaxy Movie (pictured)Nintendo / Universal Pictures / Future It's not just animation where the R95H shines, but also with the color pop in real-world movies like Speed RacerWarner Bros / Future
  • Strong contrast and detail
  • Bold colors
  • Effective anti-glare

Starting with some brightness measurements, the R95H registered 1,977 nits and 2,066 nits peak HDR brightness in Filmmaker mode and Standard mode respectively. These are solid brightness results, but surprisingly lower than those of Samsung’s flagship OLED, the S95H/S99H, which registered 2,739 nits and 2,831 nits in the same modes respectively.

Where the R95H has an advantage over OLED is in its fullscreen HDR brightness, which hit 612 nits and 600 nits in the same Filmmaker and Standard picture modes, roughly 150 nits higher than the S95H/S99H OLED. While these numbers are solid, they're lower than those of rival RGB TVs such as the Hisense UR8, which hit over 750 nits in both picture modes, and even the Sony Bravia 7 II, which hit over 800 nits in its own Filmmaker mode.

The R95H showcases good upscaling when watching lower-resolution and SDR content. Watching various channels on Samsung TV Plus, from America’s Got Talent re-runs to news channels, the picture looked more detailed than anticipated, showing the R95H’s effective upscaling.

Moving on to the reference 4K Blu-rays I use for testing, the R95H demonstrated very good picture quality. RGB’s selling point is its color reproduction, and the R95H succeeded here. Throughout The Super Mario Galaxy Movie, colors were bold and vibrant, shown in particular whenever the Lumas were on screen. Colors also appeared accurate throughout, with the red of Mario’s overalls looking true to life. I did notice that while watching in Movie mode, there was some clipping of bright objects, and color luminance could look a little distorted at times. Dropping the brightness down to 40 improved this.

In the live-action movie, Speed Racer, I was impressed at how the R95H rendered the gaudy, saturated color scheme of the Racer household, with its vibrant greens and oranges. It captured the oversaturated look, while still delivering realistic colors. While I did prefer the Sony Bravia 7 II’s colors in my Bravia 7 II vs R95H comparison, in isolated viewing, the R95H’s colors were impressive. The R95H did, however, reproduce accurate and realistic skin tones throughout my viewing.

Measuring the R95H’s color gamut coverage, it registered a staggering 148% of the DCI-P3 color gamut, as well as a 94.1% of the BT.2020 color space. These are incredible results, rivaling the best projectors, and the BT.2020 result rivals QD-OLED, found in Samsung's flagship S95H/S99H TVs.

The Batman is a great showcase for the R95H's strong contrast Warner Bros / FutureWarner Bros / Future

Switching to The Batman for higher-contrast and darker scenes, the R95H demonstrated strong contrast in almost every scene, with a great balance between light and dark tones. This was most evident in the crime scene at Mayor Mitchell’s house, and in the Batcave. The R95H also delivered excellent shadow detail, with objects like paintings on the wall of Mitchell’s house still legible even in the most shadowed areas.

I did find that while I could watch The Batman in bright conditions, thanks to the R95H’s effective glare-free screen, it was best watched in Filmmaker mode in more ambient/dimmer conditions. In Movie mode, The Batman had a tendency to look over-sharp and over-bright in places.

While its black tones weren’t quite OLED-level, the R95H did deliver some seriously rich, deep blacks in Alien: Romulus. Shots of space looked as inky as I could have hoped for, and were impressive for a backlit TV.

The R95H also demonstrated strong viewing angles, and while there was some blooming present in some scenes in The Batman and Alien; Romulus when I viewed the TV off-center, its backlight control was far more effective than you’ll see from standard LED and mini-LED TVs.

While the R95H's black levels don't beat OLED, they are very strong for a backlit TV (Image credit: 20th Century Studios / Future)

Finally, for motion, the R95H is capable of handling fast-paced scenes from movies like Speed Racer, as cars weave around the track. It showed some judder as commentators panned across the screen, but I’ve found every TV has struggled with this. For the best motion, I found setting blur and judder reduction to 3 looked smooth without venturing into soap opera-effect territory.

For sports, I watched some Major League Soccer highlights via Apple TV, and the R95H not only handled the action well but produced a very natural picture in Standard mode (my preferred picture mode for sports) that I found pleasing to watch.

  • Picture quality score: 4.5 / 5
Samsung R95H review: Sound quality

The R95H's speakers are accurate, perfect for movies like Speed Racer, but its bass levels and soundstage could be better (Image credit: Warner Bros / Future)
  • Effective OTS+ results in great sound positioning
  • Decent bass and mid range
  • Sound can feel contained to rear of the screen

The R95H’s built-in speaker array is a 4.2.2 channel, 70W system. It supports Dolby Atmos and has two preset sound modes: Standard and Amplify. There are AI sound features such as Adaptive Sound Pro available to use.

Watching the Batmobile chase scene from The Batman and the various race scenes in Speed Racer, with the TV set to its Amplify sound mode, I was unsurprised to hear that the R95H delivered accurate sound that was well mapped with the action on the screen, something I’ve found with a lot of Samsung TVs, thanks to its OTS+ feature. Whether it was a spray of bullets hitting the Batmobile in The Batman or the sound of the Mach 5 grinding a rail in Speed Racer, the sound accuracy was impressive.

The speakers deliver good mid-range tones throughout, as well as some punchy bass that accurately captures the rumble of the Batmobile’s engine and the roar of the race cars in Speed Racer. There were some impressive surround effects in both reference movies too.

While the speakers are generally decent, I did have to push the volume to higher levels (70+ out of 100) to get a more cinematic experience. The bass also felt flat at times, and sound did still feel contained to the rear of the screen. Turning on Adaptive Sound in the AI settings added more width, but at the cost of bass. While its sound is decent, those wanting a more cinematic experience would benefit from a soundbar.

  • Sound quality: 4 / 5
Samsung R95H review: Design The R95H looks premium with a central pedestal stand FutureThe R95H is trimmer than other RGB TVs I've tested so far Future
  • Polished frame
  • Thinner than other RGB TVs I’ve tested
  • Light but sturdy

The R95H takes a lot of design cues from other Samsung TVs, with a sleek, silver frame that gives the TV a premium look. Compared to other RGB TVs I’ve tested, the R95H is thinner, which again gives it an appealing look. It has a central pedestal stand that feels sturdy when attached, while the TV itself feels light for a 65-inch, and lighter than other RGB TVs I’ve tested.

The screen has a bezel-less design, giving maximum room to the pictures on screen. The R95H also has the aforementioned glare-free matte screen for easier viewing in bright conditions.

The supplied remote is the Samsung SolarCell remote, which can be recharged via the rear solar panel or via USB-C. The remote has shortcut buttons to major apps such as Netflix, as well as an AI button and mic button for voice control.

  • Design score: 4.5 / 5
Samsung R95H review: Smart TV & menusThe R95H uses Samsung's own Tizen platform as its smart TVFutureThe Game Hub houses cloud gaming appsFuture
  • One UI Tizen smart TV platform
  • Hubs including Home and Game
  • Good range of settings

As with all Samsung TVs, the R95H uses Samsung’s own Tizen OS smart TV platform, now known as One UI Tizen. Tizen has several different hubs, including the Home hub, where apps and TV shows and movie recommendations are presented, and Game hub, where cloud gaming apps are housed. There are also Daily and Art hubs, for lifestyle and art-themed apps respectively.

Tizen supports a wide array of apps, including major streaming services such as Netflix, Prime Video and Disney. In the UK, streaming services such as BBC iPlayer and ITVX are supported. It should be noted that Tizen doesn’t use Freely or Freeview for live TV, instead using its own Samsung TV Plus system.

Various AI features are supported, including the Samsung Vision AI Companion, which can be used to find specific content, or answer more general questions that you ask the AI. Also included are other AI picture and sound features, as discussed in the Features section above.

Tizen is good at offering recommendations, and the Home hub is well laid out, but as with all smart TV platforms nowadays, there's a large banner ad at the top of the screen that can be intrusive when you're trying to navigate.

Menus are well laid out and easy to navigate, and there are a good number of settings, enabling you to tailor the picture to your preferences. Tizen is fairly straightforward to use, although I did find that Samsung TV Plus would play if I lingered on the Home menu, which could be frustrating.

  • Smart TV & menus score: 4.5 / 5
Samsung R95H review: Gaming

The R95H has a stacked feature list for gaming with great performance to match (Image credit: Future)
  • Four HDMI 2.1 ports
  • 11.7ms input lag time
  • 4K 165Hz, FreeSync and G-Sync supported

The R95H has four HDMI 2.1 ports, all of which are fully equipped for gaming. It supports 4K 165Hz, full VRR including Freesync and G-sync, HDR10+ gaming and ALLM. There's a dedicated Game menu where you can adjust game-specific settings, and the Game Hub, which houses cloud gaming apps such as Xbox, Nvidia GeForce Now, and Luna.

When I measured the R95H’s input lag, it registered an 11.7ms (4K 60Hz) time. This is below the 15ms input lag time we look for, but is higher than other Samsung TVs I’ve tested, which all tend to register sub-10ms times.

Actual gameplay on the R95H is smooth, even during fast-paced action. Playing Battlefield V on Xbox Series X, the R95H easily handled the chaotic gunfights as I had to snap from target to target, showing no signs of judder or stutter. The Game picture mode rendered crisp textures and accurate colors for the most part, though I did find it favored red tones in one desert mission I played. Overall, though, the R95H is a superb gaming TV.

  • Gaming score: 5 / 5
Samsung R95H review: Value

Samsung's SolarCell remote is still one of the best available (Image credit: Future)
  • Premium priced TV
  • Similar price to OLEDs
  • Good performance and features

The R95H is a premium TV, with the 65-inch model I tested available for around $2,799 / £2,899 / AU$4,795 at the time of writing. This puts it in a similar price bracket to flagship OLEDs, such as Samsung’s S95H/S99H, which costs $2,799 / £2,899 / AU$5,295, and the LG G6, which costs $2,699 / £2,999 / AU$4,995 for a 65-inch. Compared to other RGB TVs I’ve tested, it’s one of the pricier models, but is cheaper than the rival flagship Sony Bravia 9 II, the 65-inch model of which costs $3,599 / £3,499 / AU$5,995.

The R95H commands a premium price, but does deliver premium performance and features similar to those rival OLEDs and RGB TV mentioned above. Since its release, prices for the R95H have dropped, and I anticipate they’ll continue to drop from now on, improving its value proposition. For now, I don’t think it can quite outshine rival OLEDs for the money, but it's close, and this is still a very good TV.

  • Value score: 4 / 5
Should I buy the Samsung R95H?

(Image credit: Future)Samsung R95H

Attributes

Notes

Rating

Features

The Samsung R95H has a stacked feature set, including a ton of smart and AI features, and dedicated gaming features. Dolby Vision is still not supported though.

5/5

Picture quality

Vibrant, detailed and delivering strong contrast, the R95H's picture quality is excellent. It doesn't beat OLED, and there is still some blooming, but picture is very good.

4.5/5

Sound quality

Accurate, well-mapped sound with good detail and clear speech. Bass can be hit-and-miss, though, and the soundstage can feel narrow.

4/5

Design

Slimmer than most RGB TVs, with a sleek, polished design. Looks like a premium TV.

4.5/5

Smart TV and menus

Tizen is a vey good smart TV platform with plenty of great features, and it's easy to use. Some annoying quirks do remain, though.

4.5/5

Gaming

Fully kitted out with ports and features, and with top-notch performance to match, the R95H is a great TV for gaming.

5/5

Value

A premium-priced TV in the same price bracket as some of the best OLEDs, but has the features and performance to mostly justify the price.

4/5

Buy it if...

You want brilliant picture quality
The R95H's picture is vibrant, colorful and detailed. Add in strong contrast, rich black tones and a glare-free screen, and the R95H's really impresses.

You want a TV for gaming
The R95H is packed with all the gaming features you could need, and delivers terrific performance to match.

You want to watch in a bright room
The R95H's glare-free matte screen makes watching in bright rooms easy, doing a great job at eliminating reflections.

Don't buy it if...

You're on a budget
The R95H is a flagship TV and carries a premium price. While it has excellent features and performance, cheaper RGB TVs and OLEDs with similar features are available.

You want Dolby Vision HDR
The R95H, like all Samsung TVs, doesn't support Dolby Vision HDR.

You want the very best picture quality
While the R95H boasts very good picture quality, it still doesn't quite beat the best OLEDs for me.

Also Consider

(Image credit: Future)

Samsung R95H

Samsung S95H/S99H

LG G6

Sony Bravia 7 II

Price (65-inch)

$3,199 / £3,099 / AU$5,299

$3,299 / £3,199 / AU$5,299

$3,299 / £2,999 / AU$4,999

$2,599 / £2,299 / AU$3,299

Screen type

Micro RGB

QD-OLED

OLED

RGB LED

Refresh rate

165Hz

165Hz

165Hz

120Hz

HDR support

HDR10+/HDR10/HLG

HDR10+/HDR10/HLG

HDR10, HLG, Dolby Vision

Dolby Vision/HDR10/HLG

Smart TV

One UI Tizen

One UI Tizen

webOS 26

Google TV

HDMI ports

4x HDMI 2.1

4x HDMI 2.1

4x HDMI 2.1

4 (2 x HDMI 2.1)

Samsung S95H (US and AU) / S99H (UK)
The Samsung S95H/S99H is Samsung's flagship OLED and offers the same gaming features as the R95H, as well as the same smart TV interface, for near-enough the same price. Where the S95H/S99H has the advantage is in its richer-contrast picture quality and detail. If you want OLED, this is the TV to choose.

Read our full Samsung S95H review (US and AU) / Samsung S99H review (UK)

LG G6
LG's flagship OLED for 2026, the LG G6 supports Dolby Vision HDR support and offers OLED quality picture compared to the R95H. In terms of price, they're near-identical, and both do a offer a full list of smart and gaming features. Your choice will come down to LG vs Samsung preference.

Read our full LG G6 review

Sony Bravia 7 II
Sony's 'more affordable' RGB TV delivers excellent picture quality, with colors that actually rival, and sometimes beat, the R95H. Plus, it's a lot cheaper. It does lack the same level of features and gaming performance, and isn't as strong performing in bright rooms. This choice will come down to budget.

Read our full Sony Bravia 7 II review

How I tested the Samsung R95H

(Image credit: Future)
  • Tested over a few weeks
  • Tested in varying light conditions in our testing lab
  • Measurements taken using Portrait Displays Calman software

The first step of my testing was casual viewing to establish the best pictures modes. For sports and daytime TV, Standard worked best, and for movies and TV shows, I switched between Movie and Filmmaker depending on the content.

After this, I did my critical viewing using reference 4K Blu-ray scenes to test color, contrast, motion and detail. I also used SDR broadcast TV to test upscaling, as well as sports to test the R95H's sports viewing.

Next, I tested the R95H using specialized measuring equipment, including a Murideo Six G 8K metal test pattern generator, Klein K-10A colorimeter and Jeti Spectral 15VA spectroradiometer and Portrait Displays' Calman color calibration software.

To test brightness, I took SDR and HDR brightness measurements using white window patterns in sizes 1-100%, focusing on peak (10%) and fullscreen (100%) measurements.

After this, I tested color and grayscale accuracy in SDR, using Delta-E values (the margin for error between the test pattern signal source and what is displayed on screen.)

Next, I tested HDR color gamut coverage, using the BT.2020 and UHDA-P3 color spaces. The closer to 100%, the better.

Finally, I measured the R95H's input lag using a Leo Bodnar 4K HDMI Input Lag Tester.

We also do two new tests as part of our testing. The first is the HDR EOTF, which shows the accuracy of a TV's brightness across its range, using 1,000, 4,000 and 10,000 nits targets. Then, there is the Spectral Power Distribution test, which measures how a TV recreates colors.

Categories: Reviews

I tested the LaserPecker LX2 for weeks, and its swappable heads make this laser cutter and engraver ideal for small businesses

TechRadar Reviews - Sun, 09/20/2026 - 02:15

LaserPecker has been in the laser engraving and cutting sector for a while. Still, the LX2 is its first fully enclosed system of this type, and the first that feels genuinely suited to home and small-business use rather than a workshop with proper ventilation and space to spare.

The LX2 pairs the safety of a full enclosure with a modular head system, swapping between 20W, 40W, and 60W diode and 2W infrared without tools, enabling this machine to cover a far wider range of materials and objects than a fixed single-laser engraver. However, those machines are now becoming scarce.

In this test, I’ve looked at the LX2 with the 40W diode and 2W IR heads, connected directly to a MacBook Pro M1 Max, running LaserPecker Design Space in Beta, since the full release does not yet support the LX2.

(Image credit: Alastair Jennings)LaserPecker LX2: Price & availability

The LaserPecker LX2 is available direct from the manufacturer in the US here, and in the UK here.

At time of review, prices start at $1599 (down from $1999) / £1349 (down from £1799) for the 20W standard bundle. The 40W Standard Bundle is $1799 / £1849.

LaserPecker LX2: DesignSpecs

Laser technology: Interchangeable diode and IR laser modules
Build area: 500 x 305mm
Dimensions: 779.5 x 609.2 x 281.15mm
Weight: 22.5kg, main unit
Bed: Slatted support base, four slats supplied as standard
Software: LaserPecker Design Space (Beta, required for LX2 support), LightBurn also supported
Materials: Wood, acrylic and, with the 2W IR head, metals and plastics; see
Laser options: 20W diode, 40W diode (tested), 2W 1064nm IR (tested), 60W support
Camera: 12MP / 6K positioning camera
Connectivity: USB, Wi-Fi; USB-C on the LX2 end, USB-A on the computer end; a Mac needs an adapter
Standard accessories: Smart Air Assist, cutting slats, fire extinguisher port

The LX2 is relatively heavy at 22.5kg, but despite its size, it is well built and easy enough to lift and move around in the workshop; it’s also lighter than the two other cutters I already have, and at 779.5 x 609.2 x 281.15mm in size, a standard, properly braced project desk is more than sufficient to hold it.

Like most fully enclosed machines, it has a lift-over top lid that lets you watch the cut or engraving in progress, and a handy front-panel opening that makes loading material easier and lets you use the LX2 as a front-loader if you don't have headroom above the machine. It is the only machine I have come across with this feature.

Round the back are all the ports and connectors, including the USB-C that connects to your computer, with both Mac and PC supported. One oddity worth knowing: the USB-C end of the cable goes into the LX2, and the USB-A end into your computer, so a Mac needs an adapter.

Alongside that are a USB-A port for a USB key, a security key port (which needs a key installed for the machine to run at all), the fire extinguisher port, Air Assist, and the smoke outlet.

The Air Assist itself is a surprise. It’s still external to the device, and while it is nicely designed, it sits alongside the machine rather than being integrated. It connects via its own cable, similar to USB-C but with a proprietary fit, and I found the connector rather delicate; a second cable was needed to complete the test after the original broke.

Inside is the 500 x 305mm work area, with markings on the base for camera alignment during calibration and each cut. There are also two cameras, with a live preview back to the software; accurate positioning is easy enough, as you’d expect on this level of machine.

Once again, there is no honeycomb grid included, something that is an increasingly common omission, and LaserPecker supplies only four thin slats to support material. Four is not enough. If you buy this machine, budget for at least four more, since without them you will be constantly repositioning the slats you have to support each new piece of material.

Otherwise, the design is aesthetically stunning, and the build quality is superb. There’s no doubt that this is a solid machine, but even on initial unboxing you can see a few areas that need a little more design attention.

(Image credit: Alastair Jennings)LaserPecker LX2: Features

The feature list mirrors most other fully enclosed laser cutters at this price, and the build quality was obvious as soon as I lifted the machine out of its packaging. If the cutting accuracy holds up, this looks like a great option for a small business, and the modular heads add the flexibility to work across a huge range of materials and objects rather than being locked to one laser type.

The design is aesthetically stunning, and looks good on the workshop bench. The machine is big, but so is the work area it buys you. I like that it has front- and top-loading capabilities.

One of the big features is the ability to fit different modules with three diode options: 20W, 40W and 60W and a 2W IR for metal. This offers one of the most flexible solutions out there, so if you are running a business, this will be a great option.

(Image credit: Alastair Jennings)

Fitting a module is simple enough, though it does mean connecting a data cable and an air assist tube each time. I would still prefer these integrated into the head itself, but it is easy enough as it stands.

Once running, the engraving and cutting offer impressive speeds, and speed is one of the LX2’s headline features: 1,000mm/s with acceleration up to 10,000mm/s² which means that if used with some of the larger accessories, such as the optional conveyor, much larger projects can be tackled.

Finally, and this is one of the lead features, there are two internal positioning cameras that help with placement accuracy in the software; this positioning accuracy is essential when working with the 2W IR head, where the finished mark is harder to preview by eye.

LaserPecker LX2: Performance

Setup, calibration and connecting the software took around an hour in total, roughly half an hour unpacking and fitting the head, and another half hour on calibration and getting connected. That is in line with other enclosed engravers of this type I have looked at recently.

Fitting the head was easy enough, if not quite as smooth as some rivals, and plugging in the data cable and Air Assist tube alongside it was straightforward, though I would still rather see it integrated into the head itself. Running the vent to an external filter is worth doing and worth budgeting for, though LaserPecker has not yet listed a price.

Installing the software meant finding the Beta build specifically, since the standard release of LaserPecker Design Space does not yet support the LX2. The first run takes you through mandatory safety training before you can use the machine, then through a USB connection to start with. Calibration is more convoluted than rivals I have used.

LaserPecker Design Space is all well laid out, although there are sections where you can still see that this software is in Beta, such as the WiFi connection, re-running calibration and some stability issues. However, it’s extensive, and once you start to familiarise yourself with how it works, it does generally make sense.

Importing designs requires you to add SVG files as an example project and then open them, but line and fill information is retained and accessing those settings and adjusting power and speed is straight forwrad. I also liked the fact that there is a set of material presets, and the settings for these are close to spot on.

When you first get started with a material there is a test chart installed which will show you the effect at the different powers and speeds, this is well worth running on any new material so that you can fine tune the settings.

Some experimentation is still needed to get the perfect result for a given material and finish, but this is a starting point rather than a blank slate for every job, and it improved noticeably over a couple of weeks of regular use.

(Image credit: Alastair Jennings)

One issue that I did have during testing was with the Air Assist or to be more accurate the proprietary cable that looks very much like USB-C, and the one I received was delicate enough that the connector broke partway through the test.

That is why some of the wood samples from this review show scorching; results from earlier in testing, before the cable failed, are noticeably cleaner. Worth knowing if you are relying on Air Assist for consistent results.

Cutting 20mm basswood with multiple passes, with Air Assist working and the settings properly dialled in, produced results with little charring or residue, though getting there took time and experimentation rather than being right first time.

The 2W IR head fitted just as easily as the 40W diode, and its results were excellent; again, with no ready-made preset for every material, building the right settings is part of the process, and this is perfectly normal.

Testing the 40W module, it was able to produce clean and substantial cuts, and I tended to measure the material distance prior to each cut just to ensure the best performance.

LaserPecker LX2: Final verdict

(Image credit: Alastair Jennings)

The LX2 is a great machine with a few rough edges and odd decisions. Looking at the negatives, the first has to be the air assist cable to the machine; this is needed for automatic operation.

In the review I ended up just running a power cable directly to the Air Assist and bypassing the auto features. While breaking the cable partway through it was good to see that the Air Assist could be powered in a different way.

In use, the large workspace, high speed when needed, camera alignment and clean cuts definitely make this an appealing machine, but the software at present does hold it back; there are just small issues that need ironing out, such as the calibration process, the loading of files and some stability.

If you’re a serious maker or small business producing a genuine mix of cut wood, engraved products and customised metal items, where the modular approach makes sense at this price and with the flexibility of all those accessories, all makes this look like a great small business solution.

Should you buy the LaserPecker LX2

Value:

Well-balanced price, with huge creative potential 

4

Design:

Large and fully enclosed with large work area

4.5

Features

Modular lasers and availability of plenty of accessories future-proof the design

4

Performance

Fast cutting, precise, detailed engraving, but some software issues hold it back 

4

Total

A great machine with a few small issues; if you’re aware, it will provide excellent service. 

4

Buy it if...

You're running a small business. 

You regularly produce personalised products and need a fast, enclosed machine with enough workspace to handle efficient batch production.

You want maximum versatility. 

Swappable diode and infrared modules let one machine tackle cutting, engraving and detailed metal marking across many different materials.View Deal

Don't buy it if...

You're into occasional light engraving. 

If you only engrave coasters or small gifts occasionally, cheaper compact machines can provide sufficient capability for considerably less money.

You have limited workshop space. 

The large footprint and 22.5kg weight mean the LX2 really needs a permanent, sturdy workbench rather than occasional desk space.View Deal

For more crafting tech, I've tested and reviewed all the best 3D printers and the best laser engravers.

Categories: Reviews

After a month testing Bose's new premium headphones, I would recommend them — but I'd recommend waiting more

TechRadar Reviews - Sat, 09/19/2026 - 04:00
Bose QuietComfort Headphones (2nd Gen): Two-minute review

Bose often seems to pay more attention to its Ultra-suffix devices, which absolutely make up some of the best noise-cancelling headphones we've tested. And that is perhaps why the second-generation Bose QuietComfort Headphones — that is to say, those launched in the post-QC 35 II era — took three years to come to market, following the launch of the older QC Headphones in 2023.

These are basically the QuietComfort Ultra Headphones Gen 2 for people who don’t want to pay an arm and a leg for their sound, and given how I only ever see the non-Ultra cans when I’m out and about in the UK (a fact my editor also confirms), I’d wager that this new release is the model people have been waiting for.

Meet the QuietComfort Headphones (2nd Gen), so named because they’re quiet, thanks to Bose’s sought-after Active Noise Cancellation, and comfortable (thanks to the use of soft protein leather for pads and bands).

Having used them for several weeks, I can say that the latter is definitely true: these are incredibly easy to use for hours on end, without your ears aching or the top of your head feeling sore. You can basically use them until the battery runs down, although that’s partly because the 24-hour battery life is rather poor in 2026.

I’m not convinced on the ANC sell though. Bose has a reputation for industry-leading noise cancellation, and the Headphones Gen 2 are supposed to match the Ultra Headphones Gen 2 in this department. However, after testing the cans on multiple flights, train rides and around several cities, I’m not fully sold on the claim. They’re great at removing background sound, but not flawless; other brands have caught up, and those similarly-priced competitors surpass them in a few ways.

That’s not to say ANC is an actual problem with the QC Headphones Gen 2, but there are several departments which will raise eyebrows. The cans feel quite cheap, rattling in the hand and offering some odd gaps in the body which shouldn’t be there. They’re also quite light in the feature department, more so than you’d expect for the price.

So why have I given the Bose a four-star review? Well, despite a seemingly-unchanged driver set-up from the older models, and an EQ which barely offers you any control over your music, these cans sound fantastic. They offer detailed and precise treble and energetic and punchy bass. Because of this, listening to tune after tune on them never gets old. The spatial audio is great too, adding an immersive slant to the already-great sound.

Despite quirks, I really enjoyed using the Bose QuietComfort Headphones Gen 2; you will too if you can find them for a price that makes sense. I’m not sure they justify the premium price tag right now, but if you find them discounted, they’re a must-buy.

Bose QuietComfort Headphones (2nd Gen) review: Price and release date

(Image credit: Future)
  • Launched in August 2026
  • Sells for $359 / £299 / AU$549.99
  • Comes with carry case and two cables

The Bose QuietComfort Headphones (2nd Gen) were announced on August 6, 2026. That’s three years after the first-gen model came out, and a year after the Ultra Gen 2.

Despite not being the ‘Ultra’ member of the family, the ‘standard’ QuietComforts aren’t cheap. You can pick up the cans for $359 / £299 / AU$549.99, which is cheaper in the UK but more expensive in the US than the last-gen models (and the same cost in Australia). It is, of course, cheaper than the Ultra Gen 2 model, which launched for $449 / £449 / AU$699 and haven’t seen a massive price cut since.

So they’re premium headphones, if not ultra-premium ones. They undercut the likes of the Bowers & Wilkins PX7 S3 and Sony WH-1000XM6 (though the newer WH-1000XM4C are cheaper in most regions).

You can pick the cans up in five color options: black, white, mauve, mint and green you see depicted. In the box you get a protective carry case, USB-C to USB-C wire and a USB-C to 3.5mm cable.

Bose QuietComfort Headphones (2nd Gen) review: Specs

Drivers

Not specified

Active noise cancellation

Yes

Battery life

24

Weight

241g

Connectivity

Bluetooth 5.4, USB-C

Frequency response

Not specified

Waterproofing

None

Bose QuietComfort Headphones (2nd Gen) review: Features

(Image credit: Future)
  • ANC great, but not best
  • Poor 24h battery life
  • App doesn't offer that much

At 24 hours, the Bose QuietComfort Headphones (2nd Gen) don’t have a very long battery life. I’ve tested other options this year which last for literally 100 extra hours; don’t buy these if you need something for a long-haul flight. That listening time is with ANC turned on; you’ll get a few hours more if you turn it off, but less if you use some of the other listening features.

You charge the cans via their USB-C port, which takes 3 hours according to Bose. A new feature for the Gen 2 model is that you can also enjoy wired audio from this port, which is a real get for people who like high-quality audio. It almost makes up for the lack of a 3.5mm jack!

I suppose we should discuss that ANC. As mentioned in the introduction, it was good but not great, and certainly not the best I’ve ever used in over-ear headphones. The difference was small but noticeable: on a flight, I could hear the hum of the engines more than in some other cans I’ve tested, and surrounding sounds would creep into my music more often than I’d like.

They’re not bad by any means, and they’re still some of the better ANC headphones I’ve tested. But they’re not the best, and that’s a surprise given the name and the price point.

The headphones offer a range of listening modes beyond ‘standard’ ANC (which it calls Quiet mode), but I was surprised by how much most of these also affected audio quality. I’d recommend only sticking to Quiet or Aware, which lets in some surrounding sound.

(Image credit: Future)

You can toggle between these modes in Bose’s app, which has a few other tools. You can set up multi-point connection, change what that shortcut button does, check the battery life, set up immersive audio and play with the equalizer.

If your ears perked up at the mention of EQ, don’t get too excited. The custom mode only offers 3-band control, and there are four presets which change these three bands for bass or treble reduction or boost. It’s a surprisingly lightweight amount of customization for premium headphones, and people who like to tweak their audio sound will be greatly disappointed.

To be honest, that’s my general takeaway from the Bose app: it offers only a fraction of the tools, features and customization that you’d get from cans costing a third of the price.

One stand-out is Immersive Audio though. In the past, I've found similar offerings from rival brands a tad gimmicky, but Bose’s works very well. You can choose between Still or Motion (depending if you’re still or in motion), and it’ll deliver an encompassing sound that spreads the sound of your music or movie around you. It’s not so overt as to be distracting, and makes music a little more immersive — though I much preferred Still mode, which had a more audible spread which changed as I moved my head.

  • Features score: 3/5
Bose QuietComfort Headphones (2nd Gen) review: Design

(Image credit: Future)
  • Comfortable to wear for long periods
  • Smartly-placed and designed buttons
  • A few cheap-feeling elements

The second-gen Bose QuietComfort Headphones (2nd Gen) look pretty similar to the original pair, but with some refinements in the looks department. Hinges and the retractable arm are better hidden, and the headband’s padding looks better integrated. The cans make the older model look like a prototype.

Oddly, though, the headphones feel pretty cheap. The cups rattle, there’s a noticeable seam between the headband and pad, and parts of the headphones flop around unsupported when you hold the gadget by its headband. There are a few other similar traits which make the buds feel loose, most noticeably that there’s a worrying amount of flex in the band. After several weeks of testing, I’ve yet to have these traits manifest in any actual problem, but I’m constantly surprised by how the build quality flags behind half-priced rivals.

I do appreciate that they're based on a design many users have loved, for many years — and this is likely the key reason they've largely been kept as-is (or was). But still, in the intervening years competing design teams have worked hard on other, newer headphones, and the Bose QuietComfort Headphones (2nd Gen) feel a little flimsy and clunky in direct comparison today.

At least the QuietComfort are supremely comfortable to wear. The padding which rests across the top of your head, and the soft cups, both go a long way in ensuring you can listen for long periods of time without getting any aches or strains. It gives the impression of them being light, even though at 241g, they weigh about the same as many other pairs.

(Image credit: Future)

When you’re wearing the cans, the right cup has the volume and pause/play buttons; their prominence is different so you can easily tell what button your finger is on. The right edge has the shortcut button, and power slider; I love this latter, as it’s easy to flick to instantly turn the cans on, without needing to press and hold like you do on most rivals. Bose has really nailed the buttons here, which I admit is a small detail, but that is where the devil is according to the idiom.

There’s a decent amount of malleability here: you can rotate the cups a fair way left and right, and the band is quite extendable (though it’s fairly stiff, so you’ll have to give it a hearty tug). The cups don’t move much up and down, but they still fit my head well.

You can fold down the QCs to make them more portable, or put them in the travel case. My aforementioned issues with the ‘loose’ feel of the cans returns here; you can’t stack them on a flat surface without them falling over.

  • Design score: 4/5
Bose QuietComfort Headphones (2nd Gen) review: Sound quality

(Image credit: Future)
  • V-shaped audio with energetic bass, treble
  • Spatial audio sounds great
  • Unspecified drivers inside

If you’ve read the design and features sections of this review, you’ll know I’ve had compliments and criticisms in each department. Not so for audio quality.

Bose hasn’t detailed the driver in the QuietComfort Headphones (2nd Gen), but the previous-gen model had a 40mm unit, and the brand hasn’t boasted any audio improvements beyond generations. It doesn’t need to; the previous models sounded fantastic and the new ones do too.

Out of the box, you’re getting V-shaped sound from the QuietComfort Headphones. Treble is crisp, sharp and detailed, letting you hear tremolo and tones that many other cans miss. Bass is hefty and punchy, but with a precision and control which avoids lower frequencies drowning out the rest of your song.

(Image credit: Future)

As is generally the case with headphones offering V-profile audio, the mids lack just a little bit. I’d often notice guitars playing harmonies, piano accompaniments or high alto/low tenor backing vocals that’d be missing the ‘oomph’ I’d like them to have. But you’re not buying the Bose for a neutral sound: this is for fun and energetic music.

The sound set-up of the QuietComforts is best shown in songs like Fitz and the Tantrum’s Man on the Moon, which has hard-hitting vocals and bass but loses its rhythm guitar and strings a little, or The Hoosiers' Automatic Glow, which sees its harmonic synth line dropped to the back of the mix, in favor of the energetic sung word, and rising hook.

To return to the Bose app, you can use the EQ to try and add some emphasis on mids, but I found this only a limited solution which didn’t have much of an effect on the music.

  • Sound quality: 5/5
Bose QuietComfort Headphones (2nd Gen) review: Value

(Image credit: Future)
  • Should be top-value earbuds
  • Unfortunately, longevity isn't guaranteed

If your headphone equation is simply “I’ll spend more money for better audio”, the Bose QuietComfort Headphones Gen 2 will be a good option. They sound great and they’re comfortable, so you can enjoy music for a long time (at a fairly high cost).

But to me, a few aspects of these headphones make the premium price seem a little too high. The loose-feeling build quality, lack of app features and poor battery life all point to the cost being higher than it should be. If you see the Bose discounted by about $100 / £100 / AU$200, then these will be good-value cans. Alternatively, the previous-gen models should be enjoying a decent price cut due to being a bit older.

As it stands, the Gen 2 are still good buys, but I’d personally save money and buy cheaper headphones. Which in particular? Well, thankfully there's a competition section below…

  • Value: 3.5/5
Should I buy the Bose QuietComfort Headphones (2nd Gen)?Bose QuietComfort Headphones (2nd Gen) score card

Attributes

Notes

Rating

Features

The noise cancellation is great, but the lack of other tools and poor battery life let the Bose down.

3/5

Design

The QuietComfort is certainly comfortable, with some smart elements but a cheap-feeling design.

4/5

Sound quality

Most people will find these perfect for music.

5/5

Value

They're great, but you'd be right to expect a little more for the price.

3.5/5

Buy them if…

You find other headphones uncomfortable
Many people struggle with headphones because they don't want their head in a musical vice. Try the QCs, they're your best bet.

You want great noise cancellation
It may not be the best in the biz, but it's still very good: if you need solid ANC, you won't be disappointed.

You love immersive audio features
Always listen to your music with spatial enabled? You'll really like how Bose handles the function.View Deal

Don’t buy them if…

You need something long-lasting
Many people will find the 24-hour battery life insufficient. Luckily, it's one of the shortest figures I've seen on earbuds; you can do better.

You like tweaking your audio profile
The QC Headphones' equalizer doesn't offer you much control over your music, nor any kind of listening test.

Bose QuietComfort Headphones (2nd Gen) review: Also consider

Looking for alternative over-ears? Here are a few we've tested and would recommend.

Bose QuietComfort Headphones (2nd Gen)

Soundcore Space 2

Sony WH-1000XM6

Drivers

Not specified

40mm

30mm

Active noise cancellation

Yes

Yes

Yes

Battery life (ANC on)

24 hours

50 hours

30 hours

Weight

241g

264g

254g

Connectivity

Bluetooth 5.4, USB-C

Unspecified Bluetooth, 3.5mm

Bluetooth 5.3, 3.5mm

Waterproofing

Not specified

Not specified

IPX4

Soundcore Space 2
This affordable pair of cans costs half the amount of the QC Headphones, and its comfort and ANC match Bose. The audio quality isn't quite on par, however, and nor is the spatial audio.
Read our full Soundcore Space 2 review

Sony WH-1000XM6
Bose's closest rival is from Sony; this set costs a little more and also offers fantastic noise cancellation, an incredible sound and useful button controls.
Read our full Sony WH-1000XM6 review

How I tested the Bose QuietComfort Headphones (2nd Gen)
  • Tested for roughly four weeks
  • Paired with Android phone for Bluetooth, Android tablet for audio
  • Used on walks around neighborhood, at work, on flights and on trains

To write this full review, I used the Bose QuietComfort Headphones (2nd Gen) for just over four weeks, which gave me time to fully put them through their paces.

For the majority of the testing time, the buds were paired with my Fairphone 6 Plus smartphone, though I plugged them into a Xiaomi tablet using the cable for some wired audio. Over the course of the review I tested them on multiple flights, countless train and bus journeys, while working at home and on various walks around my city.

I listened on Spotify, to my own digital library, for movies on Now TV and videos on YouTube, and various games.

I've been testing gadgets for TechRadar since early 2019, and in that time have used countless pairs of over-ears.

  • First reviewed in September 2026
Categories: Reviews

The Withings BodyScan 2, complete with cabled handle and premium build, might be the best smart scale of 2026

TechRadar Reviews - Sat, 09/19/2026 - 03:00
Withings BodyScan 2 Body Scale: One minute review

Smart scales measure weight, body fat, muscle mass, and a whole host of other metrics through a collection of electrodes at the soles of your feet. The best smart scales are perfect for fitness enthusiasts, family health monitoring, and those who want to track changes to their body over time, but Withings wants to push the boundaries of what is possible in the smart scale category. Not satisfied with simple measurements like the ones listed above, Withings has launched the BodyScan 2, and it represents a significant step in innovation.

According to Withings, the BodyScan 2 is “the world's first longevity station. It is the only consumer device that transforms your daily weigh-in into a complete cardiometabolic assessment, revealing whether your lifestyle is adding or taking years off your healthy life.” This scale is all about trends over time and those who care about optimizing their health now, for the reward of future gains.

Building on the original BodyScan scale, version two introduces a number of new features and design changes. The display has been moved from the base to the handlebar, offering a more pleasing user experience. New features include SpO2 measurements, hypertension screening, heart and ‘vascular age’ estimations, and reporting on the risk of unstable glycaemia.

All of these improvements make the scale $200 / £100 more expensive than the original. That’s a significant increase given that even the most premium offerings from most other brands cost less than half the price, but I suppose electronics in all categories have been getting more expensive this year with the components crisis. And if you want access to the complete set of features, then you’ll have to part ways with $9.95 / £8.95 per month for a Withings+ subscription, making this a premium-only, money-no-object smart scale option.

That said, the BodyScan 2 offers the very best in features and build quality. The scale is able to track over 40 biomarkers and, through very clever processing, can report heart findings that no other scale is capable of. It also boasts a robust and premium build with the chassis being made from reinforced aluminum.

Withings has taken some of the most innovative hardware found in the best smartwatches and best smart rings and combined it with traditional smart scale technology. The result is one of the most advanced smart scales on the consumer market.

(Image credit: Future / Paul Hatton)Withings BodyScan 2 Body Scale: Specifications

Component

Withings BodyScan 2 Body Scale

Price

$599.95 USD / £449.95 GBP / $895 AUS

Metrics

40+ Biomarkers with 6-zone body composition analysis, Metabolic Assessment, Cardiovascular Insights, and a Calories Tracker

Dimensions

12.8 x 14.1 x 0.7 in / 325 x 357 x 18.5 mm

Weight

11.9 lbs / 5.4 kg

Material

Glass and reinforced aluminum

Display

LCD

Battery

Rechargeable Li-ion battery, USB Type-C

Connection

WiFi

(Image credit: Future / Paul Hatton)Withings BodyScan 2 Body Scale: Price and availability
  • $599.95 USD / £449.95 GBP / $895 AUS
  • The specs justify the high cost
  • More affordable alternatives exist

The BodyScan 2 is one of the most expensive scales on the market, period. At $599.95 / £449.95 / $$895 AUS, the scale is marketed at only the most serious of users who have the disposable income to match their health goals.

Unfortunately, the costs don’t end there. If you’d like to unlock the premium in-app experience, Withings+, then you’ll have to part with a further $9.95 / £8.95 per month. The membership provides clinical experts at your disposal, an AI health assistant to convert your history into future progress, and a long-term assessment of your aging.

The spec of the BodyScan 2 sets it apart from the rest of the competition. If you turn to the likes of RunStar, then you’ll find their most premium smart scale, the 8E Ultra, costing less than half the price of the BodyScan 2. This shows that unless you need features to measure and estimate heart age, vascular age, and risk of unstable glycaemia and hypertension, then you’ll be able to save a lot of money by going for one of the other options on our best smart scales list.

  • Value score 4.5/5
Future / Paul HattonFuture / Paul HattonFuture / Paul HattonFuture / Paul HattonFuture / Paul HattonWithings BodyScan 2 Body Scale: Design
  • High-resolution LCD screen
  • ITO Glass Platform
  • Robust and durable

The BodyScan 2 exudes the premium build quality that you’d expect given its eye-watering price tag. The aesthetic is smart, professional, and well thought through. With a reinforced aluminum chassis, you also won’t have many concerns should it be dropped on a hard tiled floor or knocked against a sink pedestal.

At the heart of the experience is a 640 x 172px color LCD screen, which is bright, vibrant, and clear. With it, users can quickly and easily track their progress without even needing to launch the Withings app. This is neatly located in the retractable handle, if you choose to use it, so your data will be closer to your eye and more easily read.

The base is covered with a large-format glass platform that contains eight integrated Indium Tin Oxide (ITO) electrodes for high-precision accuracy and support for all foot sizes and up to 200 kg / 440 lb maximum capacity. The base features a black and blue hued striped pattern, which elevates the smart scale beyond looking like a glass slab.

Extruding out of the base is the smart retractable handle with an automatic locking mechanism. It works smoothly and reliably locks into position, and its length means it’ll cater to even the tallest of users. Withings has also integrated two buttons into the handle to allow for easy operation of the unit.

As well as housing the color screen, the handle comprises four stainless steel electrodes to take the total number across the scale up to 12. Through these sensors, the BodyScan 2 is capable of performing cardiometabolic assessments and a whole-body analysis.

  • Design Score: 5/5

(Image credit: Future / Paul Hatton)Withings BodyScan 2 Body Scale: Features
  • Hypertension notifications
  • Blood oxygen level measurements
  • Heart age predictions

The BodyScan 2 represents a significant advancement in body tracking for the consumer market. It does, of course, continue to carry out the basics admirably, but beyond that, the scale introduces new measurements and features that have never been seen before in a home device. These features include hypertension, heart age, and blood oxygen level, with glucose resilience tracking coming soon.

First up, hypertension notifications. By analyzing patterns in the data collected by the BodyScan 2, Withings is able to detect signs associated with hypertension. The presence of these patterns is not a medical assessment that hypertension is present but rather the reporting of it as a heightened possibility, just like the best Apple Watches. If it detects a pattern, you’ll receive a notification through the Withings app.

Then there’s the heart and vascular age predictors, which are unlocked with a Withings+ membership. According to Withings, this is an indicator of the “heart's mechanical efficiency, based on how quickly your heart reacts to each beat and how effectively it pumps blood.”

The final new feature to mention is blood oxygen tracking, which is achieved through a multi-wave PPG sensor built into the handle. Through this infrared technology, the smart scale measures SpO2 in the same way as the best smartwatches. These three features provide a complete cardiometabolic assessment, which sets the BodyScan 2 apart from the competition.

  • Features Score: 5/5

(Image credit: Future / Paul Hatton)Withings BodyScan 2 Body Scale: Performance
  • Solid accuracy for basic metrics
  • Variable vascular age results
  • Cluttered Withings app experience

To provide a comparison set of measurements, I compared the BodyScan 2 with the RunStar 8E Pro. Both brands claim over 98.5% DEXA validation and deliver a similar set of metrics, although the BodyScan 2 offers the most.

Let’s start with the basics. The BodyScan 2 recorded my weight at 61.23kg and BMI at 18.2 compared to 61.4 and 19 on the RunStar. Comparative measurements continued across muscle rate, subcutaneous fat, visceral fat, base metabolism, and a number of other fat and mass metrics.

All readings are quickly available on the Withings app, which allows for deeper interrogation and tracking over time. Body composition data is displayed on a 3D graphic, which is engaging. I did, however, find it difficult to navigate around the Withings app with the sheer amount of data and features causing the interface to feel cluttered.

(Image credit: Future / Paul Hatton)

As accurate as the BodyScan 2 is for basic measurements, it is not these metrics that would cause someone to purchase a BodyScan 2. I was much more interested in the new features, including blood oxygen level measurements and heart age predictions. To test SpO2 readings, I compared it to my Garmin Tactix 8 and found that its readings were similar and consistent.

(Image credit: Future / Paul Hatton)

Vascular age reporting was less reliable. The first time I measured it, the app told me that my vascular age was four years older than my actual age. As you can imagine, that was a little bit of a shock. I measured it a week later, at a similar time of the day, and Withings reported only a one-year difference from my actual age. That’s a significant difference in a short space of time, which makes it difficult to entirely rely upon the findings and decide whether health changes are required.

Offering cardiometabolic measurements and estimations via a smart scale puts the BodyScan 2 at the forefront of the industry. They have introduced tech that has never before been seen in a smart scale, and the level of innovation is truly impressive. That said, I think we’re a few iterations off, seeing a smart scale delivering the necessary accuracy to make their estimations accurate enough to be relied upon to be highly accurate within some newer metrics, only a general trend indication.

  • Performance score: 4.5/5
Withings BodyScan 2 Body Scale: Scorecard

Category

Comment

Score

Value

The BodyScan 2 is extremely expensive, but for the money you get excellent build quality and a wide range of advanced features.

4.5/5

Design

A professional, modern-looking smart scale with a built-in LCD display. The retractable handle is well engineered and designed to endure years of use.

5/5

Features

This smart scale offers an array of advanced features, designed to provide a full cardiometabolic report.

5/5

Performance

Solid accuracy across standard metrics, although vascular age reporting was variable. The app is also a little cluttered.

4.5/5

RunStar 4E Body Scale: Should I buy?Buy it if...

You want full cardiometabolic tracking from the comfort of your own home

The BodyScan 2 offers some of the most extensive body and heart tracking seen in any home device.

You’re taking GLP-1s and want to maintain body mass

The BodyScan 2 tracks lean mass across the whole body so you can see exactly where you’re losing mass and respond accordingly.

Don't buy it if...

You’ll only be casually measuring your weight and a few other metrics

With full-body scanning capabilities and innovative heart tracking, the BodyScan 2 is only for the most serious of users.

You’re looking for a budget-friendly scale

At $599.95 USD / £449.95 GBP / $895 AUS, the BodyScan 2 is extremely expensive. Significantly more affordable alternatives exist.

Also consider

RunStar 8E Pro Body Scale

A similarly DEXA-verified smart scale that’s significantly more affordable, although it tracks fewer metrics.View Deal

Vitafit Smart Bathroom Scale

A similarly priced smart scale with a comparable set of features. Boasts a slightly larger display and a more comprehensive app experience.

Vitafit Smart Bathroom ScaleView Deal

How I tested

My family (two adults and children) used the BodyScan 2 scale for several weeks. Having several family members made it possible to try out the multi-profile functionality, but most of the time I spent testing the scale using myself as a subject. I focused in on some of the new features that set the BodyScan 2 apart, such as vascular age and SpO2. Having the scale located in a busy family bathroom enabled me to determine the robustness and durability of the device.

First reviewed: September 2026

Categories: Reviews

Geekom A5 mini PC 2027 Edition review: Good value, well-made, and a decent user experience for those who aren’t excessively ambitious

TechRadar Reviews - Sat, 09/19/2026 - 01:15
Geekom A5 2027 Edition: 30-second review

Often, reviewing computer equipment has an odd, unexpected cyclical nature. Because many companies can’t be bothered with new nomenclature and launch new products with old names.

This is at least the third version of the Geekom A5 I’ve seen, and thankfully Geekom have decided to call this the 2027 Edition to segment it slightly from prior options.

Where the original Geekom A5 went after desktop-class performance on a budget, the 2027 Edition changes tack. Geekom has kept the same compact metal chassis, the same generous port selection and the same easy access to internals, but it has fitted a very different processor under the hood.

Out goes the AMD Ryzen 7 5800H, a 45-watt mobile chip that pushed hard for performance. In comes the AMD Ryzen 7 7730U, a 15-watt part that shares the same Cezanne silicon and Zen 3 cores but is tuned for efficiency rather than speed.

The result, on paper at least, is a machine that runs cooler and quieter, backed by a new IceBlast 3.0 cooling system that Geekom claims cuts noise to as low as 28dB at idle. Geekom is now pitching the A5 2027 Edition for 24/7 office and commercial use, rather than as a budget performance desktop.

The available SKUs offer two CPU options: a cheaper AMD Ryzen 5 7430U and a more powerful AMD Ryzen 7 7730U. All machines come with 16GB of DDR4 memory, but storage can be 256GB, 512GB or 1TB.

Memory is expandable to 64GB, and storage has actually grown more flexible, with room for two NVMe SSDs and a 2.5-inch SATA drive, but the second M.2 slot is the smaller 2242 variety.

What the A5 2027 Edition offers is a relatively affordable platform for general office use, but it lacks the expansion possibilities that the best mini PCs provide with technology like OCuLink, USB4 and Thunderbolt.

(Image credit: Mark Pickavance)Geekom A5 2027 Edition: Price and availability
  • How much does it cost? From $465/£446/€479
  • When is it out? Available now
  • Where can you get it? Currently, this machine can be obtained directly from Geekom or via online retailers

The A5 2027 Edition is sold in several bundles, and the number of SKUs varies by region. Most come with 16GB of RAM, but with different processors and storage.

The variations are complicated, so I’ve created a small table showing the options and prices for the US, UK and EU. Each region also has a discount code that improves prices by 10% in the US, 5% in the UK, and €50 off in the EU.

Global pricing for Geekom A5 2027 Edition

CPU

RAM/SSD

USA price

UK price

EU price

Ryzen 5 7430U

16GB+1TB

$465

£449

€479

Ryzen 7 5825U

16GB+512GB

$499

N/A

N/A

Ryzen 7 7730U

16GB+256

$499

£399

€479

Ryzen 7 7730U

16GB+512GB

$549

£469

€549

Ryzen 7 5800H

32GB+512GB

N/A

N/A

€549

As you can see in the table, only three SKUs are available in all locations, and some 5800 series options are unique to the US and parts of the EU.

What needs to be acknowledged is that the prices of RAM and storage have skyrocketed in the past year, and given those increases, the price of this A5 doesn’t seem excessive. Though, considering that the memory and storage on these machines are replaceable, it seems odd that Geekom didn’t offer a barebones SKU.

It should be noted that the AMD Ryzen 7 5800H model was on the German and Spanish Geekom sites, but not on their French or Italian. Canada has the same SKUs as the USA, and Japan has the same, but with the Ryzen 5 7430U model removed. The older A5 had the 5800H, so these machines may not be the 2027 Edition, but older stock.

Curiously, via Amazon you can buy the AMD Ryzen 7 7730U 16GB+512GB for the same price as Geekom offers it (before the discount code), $549 or £469, but it comes in Rose Gold, not silver.

The two obvious competitor machines that use the same platform are the GMKtec NucBox M5 Ultra and BOSGAME P4 Ultra.

The GMKtec NucBox M5 Ultra can be found on Amazon for $599.99 or £609.96, but it comes with 32GB+1TB and the 7730U processor. A better value option is the BOSGAME P4 Ultra, which you can get on Amazon.co.uk with a voucher for £385, and it comes with 16GB+1TB and a Ryzen 7 CPU. The same machine is $519 on Amazon.com.

Therefore, if you want this platform cheaper, then BOSGAME is probably the right choice, but the GMKtec machines look better made, and the P4 Ultra can come with a single memory module, undermining its performance significantly.

  • Value: 4 / 5

(Image credit: Mark Pickavance)Geekom A5 2027 Edition: SpecsGeekom A5 2027 Edition Specifications

CPU:

AMD Ryzen 7 7730U (8 cores, 16 threads, 16MB cache, 2.0GHz to 4.5GHz)

GPU:

AMD Radeon Vega 8 Graphics (integrated)

RAM:

16GB DDR4 SODIMM (dual-channel 2x8GB, expandable to 64GB)

Storage:

512GB M.2 2280 PCIe 3.0 x4 NVMe SSD, plus free 2.5" SATA bay and M.2 2242 SATA slot

Ports:

3x USB 3.2 Gen 2 Type-A, 2x USB 3.2 Gen 2 Type-C, 1x USB 2.0 Type-A, 2x HDMI 2.0, 1x 3.5mm audio jack, SD card reader

Networking:

2.5GbE LAN, Wi-Fi 6, Bluetooth 5.2

OS:

Windows 11 Pro (pre-installed)

Base Power:

15W (TDP)

PSU:

19V 3.42A, 65W

Weight:

652g

Dimensions:

117mm x 112mm x 49.2mm

Geekom A5 2027 Edition: Design
  • Same enclosure again
  • Easy access retained
  • No USB4

Visually, the A5 2027 Edition is business as usual for Geekom. It reuses the same silver metal-and-plastic chassis as the original A5 and the Mini IT13 before it, with two USB ports and the audio jack on the front, the SD card reader on the left, and the rest of the I/O around the back.

One aspect of this design I especially liked is that all the ports are labelled correctly, revealing the USB specification and whether the port is designed for charging. Some makers just completely ignore these details, leaving ports alongside others with a completely different specification looking identical.

Internal access follows the same familiar pattern too. Four retained screws release the base, which stays tethered by a ribbon cable feeding the free 2.5-inch SATA bay underneath. The DDR4 SODIMM slots and the primary M.2 2280 NVMe slot sit inside, alongside a second, smaller M.2 2242 slot for a SATA SSD.

I wish the second slot was 2280-sized, but evidently there was insufficient space for it.

That gives the A5 2027 Edition a genuinely unusual triple-storage layout for a machine this size, and Geekom quotes a combined ceiling of around 7TB across all three. Not sure how that works, because the 2280 slot could take 4TB, I’ve seen 2TB on 2246, but SATA HDDs can be at least 5TB and SSDs to at least 4TB. Therefore, you could put more than 7TB in one of these machines.

What’s good about this system is that the internal access doesn’t require removing adhesive-attached feet, and the memory is socketed, allowing for easy upgrades.

(Image credit: Mark Pickavance)

The only caveat with the memory, other than the lower bandwidth of DDR4 compared to DDR5, is that to get the best performance, the memory upgrades need to be in pairs.

So if you want more memory, sticking one 16GB stick alongside an existing 8GB module isn’t ideal. It might work, but it will reduce the memory mode to single-channel. Therefore, if you want more RAM, two 16GB or 32GB SODIMMs are the path to follow, leaving you two 8GB modules to re-home.

There are 48GB DDR4 modules available, but the maximum RAM on this platform is 64GB. At the time of writing, a 32GB DDR4 SODIMM is typically around $250, making that upgrade about the same cost as the system. But should the AI bubble burst (or rather, when), then that might be a more realistic proposition.

My disappointment is that there is no USB faster than USB 3.2 Gen 2, even though the platform has plenty of unused PCIe lanes. There are at least five USB ports with this specification plus a single USB 2.0, but not a single USB4 or USB 3.2 Gen 2x2 port. I understand the resistance to putting USB4 controllers on older platform technology, but the market has outgrown USB 3.2 already.

Overall, as I’ve come to expect from Geekom, this is a well-made mini-PC which delivers a decent user experience for those who aren’t excessively ambitious from a performance perspective. It isn’t a massive evolution from earlier, but it seems decent value for money in these difficult times.

  • Design: 4 / 5
Geekom A5 2027 Edition: Features
  • AMD Ryzen 7 7730U
  • New Barcelo-R silicon with a lower power ceiling
  • IceBlast 3.0 cooling

The headline change in the A5 2027 Edition is its processor. The AMD Ryzen 7 7730U carries a similar die and Zen 3 cores as the 5800H in the original A5, with the same 8 cores, 16 threads and 16MB of L3 cache. Where the 5800H was a Cezanne design, the 7730U is one of four Barcelo-R chips that AMD made before moving on to the Rembrandt-R architecture.

The biggest change between these chips is the power envelope, cut from 45 watts to 15 watts.

That is a significant reduction, and it shows up directly in sustained clock speed. Our CPU-Z capture shows the new chip running at 3470.7MHz under its default profile, down from the 4364.5MHz we saw on the outgoing 5800H with the same tool.

The smaller 65W power brick that ships with the 2027 Edition, down from the original's 120W unit, reflects how much less power headroom this design now needs. Geekom backs the lower TDP with its IceBlast 3.0 cooling system, said to improve cooling efficiency by around 42 per cent over the previous generation and to keep core temperatures under 72 degrees Celsius after an hour of sustained heavy load in a 30-degree room.

Geekom quotes noise levels as low as 28dB at idle and around 32dB under heavy load, figures that make the A5 2027 Edition a genuinely quiet machine for a desk or reception area.

The trade made here is performance for silence, which, depending on the working environment, could be the right or wrong choice.

Storage and memory remain DDR4 rather than the faster DDR5 found in newer Ryzen designs, and the M.2 slot is still limited to PCIe 3.0, so NVMe throughput is capped in the same way it was on the original A5. Port-wise, the story is also unchanged: still no USB4 or Thunderbolt, with USB 3.2 Gen 2 Type-A and Type-C as the fastest connections on offer.

That this system comes with dual HDMI 2.0 outputs and an easily accessible SD card slot on the side offers genuine potential for marketing displays, especially considering how cool it all runs.

(Image credit: Mark Pickavance)

What needs to be said is that this isn’t especially new technology. The processor was first launched in Q1 of 2023, which will shortly make it four years old. Fabricated on the older TSMC 7nm FinFET technology, it can’t hope to offer the same levels of efficiency as the latest Ryzen parts, which use TSMC N4P FinFET.

To be clear, there is little wrong with the older chips, and AMD evidently still holds a significant stock of them, but better, more efficient technology is available for those willing to invest in it.

These devices offer significant performance increases in CPU-, GPU-, and NPU-related tasks, have better technologies (USB4, etc.) and larger caches.

But they don’t have upgradable memory, as they use LPDDR5X-8533 surface-mounted memory, or similar, and their default power consumption is greater, leading to fan noise.

The computing platform in the A5 2027 Edition might not be full of youthful enthusiasm, but it's more than adequate for many office tasks.

  • Features: 3.5 / 5
Geekom A5 2027 Edition: Performance

(Image credit: Mark Pickavance)

Mini PC

Geekom A5 2027 Edition

Geekom A5

CPU

AMD Ryzen 7 7730U

AMD Ryzen 5 7430U

Cores/Threads

8C 16T

6C 12T

RAM

16GB DDR4 (2x8GB)

16GB DDR4 (2x8GB)

SSD

512GB SSD

512GB SSD

Graphics

Radeon Vega 8

Radeon Vega 7

3DMark

WildLife

7346

6796

FireStrike

3504

3259

TimeSpy

1390

1288

S.Nomad

1111

1086

Cine24

Single

86

71

Multi

479

421

Ratio

5.58

5.96

GeekBench 6

Single

1993

1910

Multi

7712

6503

OpenCL

16050

14325

Vulkan

14539

13895

CrystalDisk

Read MB/s

3736

3208

Write MB/s

3186

2290

PCMark 10

Office

6709

5296

WEI

Score

8.1

8.1

It was originally my intention to compare this A5 with the 5800U-powered one, but when I looked at the data, that prior model came during a transition where I was switching from Cinebench 23 to GeekBench 5. And I no longer have that hardware to retest.

What I can say is that in the data I do have that maps between the two, the 5800U was more powerful, but it used more power and fan noise was audible.

What I did find in my data pile was an older A5 that used the AMD Ryzen 5 7430U CPU, and those benchmarks mapped to what I used on the A5 2027 Edition and provided some interesting context between the two.

It’s not exactly a revelation that a CPU with more cores and a better GPU is going to run faster, but that’s the narrative running through these results. But it also hints in the Windows Experience Index that for a person running Office applications on these systems, the difference might not be significant, or even noticeable.

In this respect, the A5 2027 Edition is a punchier option, but it's hardly leaving the older A5 with the Ryzen 5 platform in the dust. For those wanting to minimise the cost of these systems, there might be something useful to take from these results for them.

As an aside, I recently reviewed the BOSGAME P4 Ultra, which uses the same CPU as the A5 2027 Edition but performs worse than the old A5 with the Ryzen 5 CPU. How is that possible? It is when you deliver the 16GB of RAM in a single module, reducing the bandwidth of the system by 50%. As an example of the impact of doing this, the WildLife score on the P4 Ultra is only 4961.

The lesson from these scores is never run one of these systems in single-channel mode, unless you like your computers to run slowly for no good reason.

  • Performance: 3.5 / 5
Geekom A5 2027 Edition: Final verdict

(Image credit: Mark Pickavance)

I would consider the Geekom A5 2027 Edition as a refresh rather than a generational leap. Geekom has kept everything that made the original A5 easy to recommend: the compact metal chassis, the simple internal access and the strong port selection, and layered on a genuinely useful third SATA storage option.

What it has not done is make the machine dramatically faster. The move from a 45-watt to a 15-watt processor trades outright performance for lower noise, lower heat and, Geekom claims, lower running costs over years of continuous use.

For buyers who want a quiet, always-on machine for general office work, that trade could be exactly right. For anyone chasing the best possible performance per pound, the original A5, while now harder to find new, made a stronger case.

Should you buy a Geekom A5 2027 Edition?

Value

Pricier than the original A5 at launch, but that's to be expected.

4 / 5

Design

An effective design that doesn't need to change

4 / 5

Features

Four-year old tech, but still useful

3.5 / 5

Performance

Slower than the 5800U A5s, but not terrible

3.5 / 5

Overall

A quieter, cooler machine aimed at 24/7 office duty rather than raw speed.

4 / 5

Buy it if...

You want a quiet, always-on office machine
With its 15-watt chip and IceBlast 3.0 cooling, the A5 2027 Edition is aimed squarely at desks, reception areas and back offices where a quiet machine matters more than outright speed.

You need some local storage flexibility
With three storage slots that include an NVMe drive, a 2.5-inch SATA bay and a second M.2 SATA slot, this machine gives you more expansion room than most mini PCs at this price.

Don't buy it if...

You want the fastest machine for the money
The lower 15-watt power limit means the 2027 Edition is likely to trail the outgoing A5 and rival machines that still use 45-watt silicon, once benchmark figures are confirmed.

You need Thunderbolt or USB4
As with the original A5, the fastest connection on offer is USB 3.2 Gen 2. Anyone relying on Thunderbolt peripherals or displays will need to look elsewhere.

Also Consider

GMKtec NucBox K16
Another AMD NUC built around the Zen 3+ Ryzen 7 7735HS, offering a genuine generational step up in performance over either A5 model, in a similarly compact and upgrade-friendly case. It costs more, but comes with 32GB of RAM and 512GB or 1TB of storage.

Check out our GMKtec NucBox K16 review

Geekom A5 2025 Edition

Geekom's prior model uses the AMD Ryzen 5 7430U and is cheaper than the newest model, while being a similar low-power and low-noise offering. Power consumption is even lower due to the lower clock speeds, but it uses the same chassis and has the same storage options.

Check out my Geekom A5 2025 Edition review

For more professional hardware, we've reviewed the best business computers.

Categories: Reviews

Control Resonant shows that sometimes bigger really is better

TechRadar Reviews - Fri, 09/18/2026 - 08:00

How do you approach a sequel? Do you refine the predecessor’s mechanics and stick with the main character? Well, Control Resonant chucks those out the window.

Review info

Platform reviewed: Xbox Series X
Available on: PS5, Xbox Series X|S, PC
Release date: September 24, 2026

Instead of an open-zone map like the first game, Resonant goes full open-world. You play as Dylan Faden, old protagonist Jesse’s brother, who was (mostly) freed from the Hiss’s evil influence towards the end of the last adventure.

Now, Jesse has disappeared somewhere in an otherworldly Manhattan, and it’s his job to find her.

Like brother, like sister

(Image credit: Remedy)

Control Resonant’s story is markedly improved over its predecessor. The sibling bond between Dylan and Jesse provides an emotional anchor to latch onto. Learning about their childhoods through the main missions was engaging enough and made it much easier to follow this time around. It kept my attention in ways that Control didn’t.

The small cast of support characters also smartly keeps the character development focused mainly on Dylan. Zoe De Vera is assigned as Dylan’s handler, and I like how their relationship starts off rocky with her viewing him as just a tool to fight the Hiss. But as the story progresses, Zoe starts considering Dylan as more than that, asking him personal questions about his favorite music.

Emily Pope returns from the first game and acts as an important linchpin for Dylan to discuss Jesse. As Emily helped Jesse throughout the entirety of Control, Dylan can confide in Emily, giving him hope he’ll eventually find his sister. These powerful relationships make Resonant a less lonely trip.

As someone who’s fascinated with sci-fi and the occult, Resonant plays around with common tropes to great effect. In one particularly memorable main quest, Dylan is tasked with figuring out what happened to a missing crew, and its implementation of time dilation and alternate timelines really had a grip on my attention. It’s moments like these that make Resonant’s story emotionally satisfying, but narratively absorbing too.

Go big or go home

(Image credit: Remedy)

Going from Control to Control Resonant feels similar to how Final Fantasy 7 Remake transitioned to Final Fantasy 7 Rebirth. It’s a high-risk endeavor, as creating an open world can add a lot of unnecessary bloat compared to a more streamlined experience.

Thankfully, Resonant’s exemplary art direction and traversal mechanics make its distorted version of Manhattan a treat to run around in. Rather than the brutalist architecture of the first game that took place entirely indoors within the Oldest House, Resonant doubles down on the more kaleidoscopic and parallactic aspects in the open world.

As part of the main quests, you’ll also be given objectives to find “Faults,” which are areas where remnants of Jesse could be residing. While they’re not very combat-heavy, they offer a lot of story exposition exploring Dylan and Jesse’s background. At the very end, you’ll be awarded a new way for Dylan to move around.

These include being able to shift his gravitational orientation around so the wall next to him becomes the floor, or the intriguing take on the traditional grappling hook, which looks more like an invisible magnet pulling Dylan by the waist.

Best bit

(Image credit: Remedy)

Like the first game's massive brutalist skyscraper, the weird, twisted version of Manhattan in Control Resonant is an absolute joy to explore full of striking views.

Control Resonant is also reminiscent of Elden Ring, in that you’re able to tackle tough side bosses called Resonants all across the Big Apple. By defeating them, Dylan is able to unlock more of his offensive move kit. You’re incentivized to go for it, as it’ll give you more options to fight against the Hiss and other enemies.

You only need to take out a few to advance the story, but afterwards you can actually complete it without taking the rest of them on if you want. This open-endedness comes in handy if you get stuck on a certain story boss. You can explore more, get stronger, and return later.

There are also plenty of other interesting activities to tackle, and these often bring a more down-to-earth tone to Resonant’s paranormal twists. In a multi-part side quest, Dylan is trying to help a girl find her way home from an alternate dimension. And he has to play “spot the difference” with different taxi cabs to take the right one back. There’s another side quest where Dylan helps a colleague find their invisible cat, which ends up in the cat actually helping out against a mini-boss fight in a humorous conclusion.

These side quests reflect Dylan’s altruism and the guilt he harbors for his actions from the first game, allowing him to redeem himself in small, yet meaningful ways. They also reward massive amounts of EXP and useful ingredients to unlock new skills and abilities.

Close quarters combat

(Image credit: Remedy)

As opposed to the first game’s third-person shooter gameplay, Control Resonant is a melee-focused action game. It’s an interesting switch-up that certainly helps this sequel differentiate itself.

The basic gameplay loop you’re going for is to stagger enemies and then perform an execution. Doing that causes Dylan to temporarily enter Dominance, which astronomically ups his attack power and allows him to kill enemies quicker. It’s a gratifying process that’s just as exciting as it looks cool.

The big issue here is that it’s incredibly difficult to falter enemies when you first start out. Dylan’s weapon, the Aberrant, can morph into different forms for both his light and heavy attacks. At the beginning, you can pick one form, and the rest you can create later on with the proper drops and materials.

(Image credit: Remedy)

If you’re like me and picked a heavy weapon choice that didn’t fit your particular playstyle, then you’re going to have a tough time. You can use limited reset points to rechoose your points and abilities, but the fact that it’s not free feels like it’s discouraging experimentation, especially at the start before eventually unlocking everything.

After initially selecting the spear as my heavy weapon and being disappointed, I reset my build and opted for the slow but powerful hammer instead. I found that it fit my approach much better, and suddenly I was enjoying it more. Beforehand, combat felt like a slog as enemies seemed to just be damage sponges, as it took forever to falter them.

A little later on, after defeating the giant fire Resonant, I unlocked the ability to cloak my weapons in flame, increasing both the damage and falter output. Now even my light weapon attacks with the multi-target scythe-like glaive inflicted a decent amount of stagger. I was able to enter Dominance faster, and the combat became more frenetic, explosive, and most importantly, fun.

It just takes a while to get to.

Should I play Control Resonant?Play it if...

You like action-adventure games
If you’re a fan of games like Devil May Cry, this might be up your alley. Just don’t expect to be graded on your work, though.

You enjoyed the first Control
Control Resonant is a direct sequel, so if you enjoyed the first game, then you should play this one too. It’s surprisingly loose with the events of the predecessor, so you don’t actually need to play it before jumping in here, but it helps.

You like open-world games
Control Resonant has one of the more interesting open-world games in recent memory, and the traversal mechanics are a joy to toy around with.

Don't play it if...

You like shooters
While the first Control was a third-person shooter, Control Resonant is not. This could be a sticking point for those coming from the first game.

You want a more streamlined experience
The first Control was much more confined, with open-zone environments rather than the open world that Control Resonant has.

Accessibility features

Control Resonant has an impressive suite of accessibility features. These options include text, subtitles, colorblindness adjustments, and toggles.

It also has an Assist mode, which lets you change gameplay parameters to your liking. For example, you can change how fast Dylan’s Power meter replenishes, which lets him fire off special abilities. You can also make him invincible.

There’s even an option to OHKO enemies with just one attack, and it works on bosses too. None of the options disable Achievements either.

How I reviewed Control Resonant

I played 25 hours of Control Resonant on Xbox Series X with the standard Xbox Wireless Controller on my 1080p LG Sharp TV, finishing up the main campaign while completing some side quests.

After witnessing the ending, you can go back into the open world once again to mop up any remaining collectibles and quests.

First reviewed September 2026

Categories: Reviews

200 hours in, Fire Emblem: Fortune’s Weave is my favorite Nintendo Switch 2 game ever — here’s why

TechRadar Reviews - Wed, 09/16/2026 - 07:00

Every now and then, a game comes along that doesn’t just entertain and engage me — it totally enraptures me. It stands as a pure work of art that reminds me of exactly why I love this medium and captures the essence of a book you just can’t put down. For me, that’s exactly what Fire Emblem: Fortune’s Weave is — an engrossing experience that I simply can’t get enough of.

Review info

Platform reviewed: Nintendo Switch 2
Available on: Nintendo Switch 2
Release date: September 17, 2026

This Nintendo Switch 2-exclusive tactical JRPG offers a combination of excellent turn-based combat and rewarding exploration, alongside captivating storytelling and a great cast of characters. And its sheer scale cannot be understated — I’ve spent north of 200 hours in Fortune’s Weave, and there’s still so much more I have to see.

I’ve played through each of the four Flame Lords’ paths and taken the battle to the demonic god Balor, and I’ve got a number of thoughts about gameplay, visuals, and narrative to share. So, without further ado, let’s take a look at why Fire Emblem: Fortune’s Weave is one of the best Nintendo Switch 2 games you can play right now.

Four paths converge

(Image credit: Nintendo)

I won’t get into the weeds of the premise in Fortune’s Weave, but to sum up, you’re able to play as four heroes, known as the Flame Lords, as they compete in a grand arena event known as the Heroic Games. The champion of the Games will be granted a wish of their choosing by Divine Sovereign, Solel, who rules over the land of Dagda and its capital, Dagsion.

After completing the brief prologue — which acts as a solid tutorial for newcomers — you can select any of the Flame Lords’ paths and play through them in any order you like from a central hub area. This approach works nicely, as you don’t have to replay the prologue each time you start a new journey, and you’re able to dip in and out of each story as you please.

This makes up Part I of the game, which was probably my favorite overall. Although some cutscenes and quests are the same across the four stories, they still feel distinct and gripping in their own right. Each pathway has a distinct tone and feeling to it, with each Flame Lord having a deeply personal ambition and a unique set of close allies. For instance, the vengeful and skilful Leda is joined by the womanizing bard Sirocco and protective warrior Buccar, whereas Dietrich is partnered with the excitable Esmeralda and bizarre and eccentric missionary, Fabio.

The core cast of characters is truly excellent, but you’ll also be able to recruit more allies as you progress the story, including foes you face in the Heroic Games and parties of interest across Dagsion. Many of these units can be recruited across all four stories, though their recruitment requirements often vary, which encouraged me to experiment with different characters across different stories.

Best bit

(Image credit: Nintendo)

Anything with Dietrich and Fabio. They're an unlikely yet incredible duo, with Dietrich's bloodlust and Fabio's eccentricity somehow combining to create some of the most hilarious — and sometimes emotive — dialogue in the series.

What makes the multi-path system click is that you’ll uncover revelations in one story that answer questions — or even pose new ones — about events in one of the other paths. There are plenty of twists and turns — some perhaps more obvious than others — which change the way you perceive certain characters and add substantial depth to units that may seem less significant on some paths than others.

This cross-path storytelling is done really well, and the narrative is strong, more generally. I won’t spoil anything, but it’s got its fair share of shock instances, touching moments, and character development that help it to hit — and if not, exceed — the standards that the series has set thus far.

Gameplay-wise, things are kept pretty fresh too. Each Flame Lord has specific abilities that they can make use of on the world map and beyond, with Dietrich able to battle warriors and learn their combat arts, Leda capable of holding performances to unlock unique materials, Theodora able to recruit warriors to assign battalions, and Cai skilled enough to wrangle mounts for himself and his allies.

And luckily, all of this comes together nicely in the latter parts of the game. While Part I is more individually tailored to each Flame Lord and their journey through the Heroic Games, paths begin to converge in Part II, known as the War Arc. Again, I won’t spoil anything here, but Part II offers far less variation across each pathway, but there are still some interesting differences in dialogue, and the way you approach battles will likely change considerably.

I loved how the enormity of Fortune’s Weave came together in Part III, though. Here, you’ll be able to unite all of the Flame Lords beside the game’s true protagonist, you. It’s awesome that you’re able to make use of all of the heroes’ unique abilities and even re-recruit old units for the final battle against the demonic lord, Balor.

Being able to bring all of your units, inventory, and abilities into a singular, epic finale is incredibly rewarding and makes building the ultimate army even more enjoyable.

I see grids in my sleep

(Image credit: Nintendo)

Let’s delve a bit more deeply into gameplay, which, as you’d expect, is outstanding in Fortune’s Weave.

For the most part, you’ll be battling on classic grid-based battlefields. Honestly, I’ve fought on these so many times I’m starting to see them in my dreams. It's that classic turn-based Fire Emblem that you know and love, with some returning features, like Combat Arts (which provide benefits in exchange for weapon durability) and gambits (in Theodora’s path), for instance.

But there are new mechanics too, like Blaze Arts, which are unique to specific units. By sacrificing HP, Blaze Arts enable you to deal more damage, move further, buff allies, and more. The health trade-off means they don’t feel like a cheat code, and they also fill a blaze gauge, which will burst at a certain point, forcing you to work with reduced HP for the rest of the map.

(Image credit: Nintendo)

Standard battles feel brilliantly balanced, and I never felt that difficulty spikes were too severe or that I had to grind much to push past my opponent. When you do want to grind, though, you can enter into a skirmish against foes on the world map, or try your luck in a dungeon.

Dungeons work a bit differently, and you’ll move around a 3D area to face foes in Clash Battles. These are a bit different and combine light action segments with more traditional turn-based JRPG combat rather than tactical grid-based battles. I think that they’re a great option if you want a break from the usual maps and want a faster-paced method for gaining experience or class proficiency for your units.

That’s not to say that the standard maps aren’t engaging though; quite the opposite. There’s some excellent map variety, and some battles will ask more of you than just routing the enemy. In some cases, I had to defeat more giants than my opponents, rescue defenseless citizens from a huge serpent, or even collect missing cargo before thieves made off with it. Battlefields are also delightfully diverse throughout the heroic games, and become even grander as the stakes rise towards the back end of the game.

If at any point you’re struggling, you can make use of Blessings, enabling you to rewind to a previous turn, increase your strength, or reduce the cost of Combat Arts, for example. I kept usage of these to a minimum, as I was playing on the slightly more gracious Normal/Casual difficulty. But there’s also a Hard mode, and you can play Classic (where units are permanently lost when they fall in battle), where Blessings will likely feel a bit more necessary.

All in all, combat is incredibly addictive, varied, and offers impressive depth. Building a squad with the right balance in terms of classes and weapons is massively satisfying, and breaking things up with a bit of dungeon crawling keeps the experience feeling fluid and fun for the game’s full runtime. And given that we’re talking about a title that will take you well over 100, if not 200, hours to finish, that’s an impressive feat in itself.

Beyond the battlefield

(Image credit: Nintendo)

Before I wrap up, I want to touch on my experience with Fortune’s Weave outside of battle. There’s quite a bit to do, both within the capital, Dagsion, and in the land of Dagda more broadly.

Dagsion has all of the stuff you’d expect. A training ground to boost your aptitude with specific weapons, a shopping district, an inn for viewing support conversations and restoring motivation (which is used for training and increasing your Blessings level), and an area where you can take an exam for whatever class you want to be.

A lot of your time in Fortune’s Weave will be spent using these facilities to increase your weapon levels, boost support with your allies, and acquire better equipment.

If I were to nitpick, I’d argue that the support grind can become a little tiresome for some units. If you want to recruit a new ally who requires a high support level, it can take quite some time to fill the gauge and add them to your team, though some are easier to add to your roster than others.

There are more things to do, though, like going to the Theater, taking a bath at the Thermae spa, and accepting subquests from distressed townsfolk. Perhaps the most unusual option, however, is Bird Time.

Here, you can feed the Pale Raven (the main protagonist in bird form) to increase your support level for later in the game. Is it a bit goofy? Yeah. Does it get a bit repetitive? Sure. But I kinda love the feeling of getting that sweet ‘perfect bird time’ message when you have a successful interaction with your ally.

Outside of Dagsion, you can enter the aforementioned dungeons, search for materials, enter into some smaller hub areas, and speak with wandering merchants. The world map is easy to navigate, but you’ll only have a set amount of time to explore before the day of the Main Quest arrives. This helps the game to maintain good pacing throughout, and while there’s a ton to explore, it’s broken up with main story goodness in healthy intervals, in my view.

(Image credit: Nintendo)

On a technical level, Fire Emblem: Fortune’s Weave is pretty solid too. It keeps a lot of the enticing visual style seen in Fire Emblem: Three Houses, but being a Nintendo Switch 2 exclusive, there’s a clear step-up in terms of resolution, and character models look excellent too. Be it Fortuna, whose vibrant hair pops with eye-catching yellow, or the striking, rich reds of Bertrand, the White-Maned Demon’s clothing, I found myself impressed by the visuals pretty consistently.

Some background textures do look a bit basic, however, and while the game runs smoothly, it’s not targeting a silky 60fps (but this never bothered me, personally).

I also want to shout out the game’s excellent soundtrack, which is more eclectic than you may think. There’s the classic orchestral-style stuff, which creates a real sense of grandeur and high stakes, but there are also spacey, synth-led tunes in the temples, which create ambience and intrigue, as well as electronic music with pumping bass in some mysterious hidden areas.

On the topic of sound, the voice acting is exceptional in Fortune’s Weave. You feel each character’s unmistakable personality through just about every performance, and this only makes you feel more attached to your units. The perfect example is Fabio, whose voice acting is just as outlandish and unusual as you’d hope for the character, though he also has some authentic, impassioned emotional scenes that stole the show. Great stuff all round.

To conclude, then, Fire Emblem: Fortune’s Weave is a masterful tactical JRPG that has it all. Addictive, depth-filled combat, fresh mechanics, a well-paced, multi-layered story, and a likeable cast of characters. It hypnotized me from minute one, all the way to the end, and its careful balance of tight turn-based gameplay and exploration really worked for me. As things stand, I consider Fortune’s Weave to not only be among the best Fire Emblem games in recent memory, but also the best game on the Nintendo Switch 2 thus far.

Whatever you do, don’t skip this one.

Should you play Fire Emblem Fortune’s Weave?

(Image credit: Nintendo)Play it if…

You want to sink your teeth into an epic RPG
Fire Emblem: Fortune’s Weave is a huge game that will easily take you north of 100 hours to finish if you want to complete each Flame Lord’s path and clear every subquest. If you’re looking for a true epic to get your money’s worth out of, this is the game for you.

You’re a fan of character-driven narratives
Yes, Fortune’s Weave features a very high-stakes story, but the narrative is largely centered around the four Flame Lords, and their personal ambitions in the Heroic Games. Watching each story unfurl, and seeing how each hero develops is a joy, so if you’re into more character-driven stories, then you’ll likely enjoy this.

Don’t play it if…

You’re not a big fan of tactical combat
There are some light action segments and swifter turn-based dungeon battles in Fortune’s Weave, but a lot of the time will be spent commanding your units on a grid. If you’re not into the more strategic style of other Fire Emblem games, then you may not have the best time with this one either.

You need top-tier performance from your games
While Fortune’s Weave looks pretty solid, it’s by no means pushing boundaries as far as visuals go. It’s very stable, in terms of performance, but it’s also not going to give you the buttery smoothness of other Switch 2 games, like Metroid Prime 4: Beyond, say, which can even run at 120fps in handheld mode.

Accessibility features

There are a handful of ways to customize your experience in Fire Emblem: Fortune’s Weave. You can make UI adjustments, like altering the size of the battle minimap, toggling the grid display on and off, you can personalize camera controls and sensitivity, and choose from a number of different subtitle languages.

There’s even an Enemy Masking mode that changes the appearances of insectile enemies if you have arachnophobia or entomophobia. There is no colorblind mode, or similar.

(Image credit: Nintendo)How I reviewed Fire Emblem: Fortune's Weave

I spent just over 200 hours with Fire Emblem: Fortune’s Weave, during which time I played through the main story (including each of the Flame Lords’ individual paths), completed just about every subquest, and recruited countless allies.

For the most part, I played in docked mode, with my Nintendo Switch 2 connected to my Sky Glass Gen 2 TV and Marshall Heston 120 soundbar. However, I did dip into handheld mode now and then, and usually had my Sennheiser CX 80U wired earbuds connected when playing on the go.

More generally, I’ve spent years reviewing gaming software, hardware, and accessories here at TechRadar, where I serve as a Senior Reviews Writer. I’ve covered all sorts of titles, from Switch 2 exclusives like Kirby Air Riders and Yoshi and the Mysterious Book to RPGs such as Dragon Quest I & II HD-2D Remake and Final Fantasy Tactics: The Ivalice Chronicles.

I've also played a number of Fire Emblem titles, including Awakening, The Blazing Blade, and Three Houses.

Categories: Reviews

Pages

Subscribe to The Vortex aggregator - Reviews