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).

TechRadar Reviews

New forum topics

Subscribe to TechRadar Reviews feed
Updated: 39 min 4 sec ago

I’ve been using the Asus ROG Strix Scar 18 (2026), and this is the best (and biggest) gaming laptop you can buy right now

Mon, 07/20/2026 - 11:11
Asus ROG Strix Scar 18: One-minute review

A hefty laptop in every sense of the word, the Asus ROG Strix Scar 18 bolsters its beefy design with high-end componentry, including a flagship Intel Core Ultra 9 processor and an Nvidia RTX 5090 GPU. It’s an 18-inch gaming machine that’s capable of running the latest titles at the best quality.

If this blockbuster performance comes at a cost, it’s portability: the ROG Strix Scar 18’s size and weight make it a desktop replacement rather than a lightweight travel companion, unless you have a big bag and a strong back.

The speakers and trackpad feel like they could be better, but this is otherwise a solid all-in-one package for gamers (and creators) who value performance.

(Image credit: Future)Asus ROG Strix Scar 18 review: Price & release date
  • How much does it cost? $6,299 / £5,699 / AU$8,379
  • When is it available? Available now
  • Where can you get it? Available in the US, UK, and Australia

You’re not hallucinating: the ROG Strix Scar 18 really is that eye-wateringly expensive. For that price, you are getting a state-of-the-art gaming laptop, and it’s a perfect balance in terms of CPU, GPU, and display, delivering desktop-like levels of performance in a fairly portable unit. But it’s still just so much to spend on a computer, and you start to wonder where higher prices due to tech shortages end, and sheer profiteering begins.

You could buy a lesser model (a 5070 model with 32GB RAM and a 2TB SSD is about $/£2,000 less) and add more RAM and hard drive capacity when you’ve got enough in your pension to afford them, but the GPU is fixed here, and this is arguably the most important bang-for-buck component to upgrade.

So yes, it’s extremely expensive, and extremely powerful – but whether you’re getting what you’re paying for is debatable.

  • Value: 3 / 5
Asus ROG Strix Scar 18 review: Specs

Price:

$6,299 / £5,699 / AU$8,379

CPU:

Intel Core Ultra 9 275HX

Graphics:

NVIDIA GeForce RTX 5090

Display:

18-inch ROG Nebula HDR QHD+ (2560 x 1600), Mini-LED, 240Hz

RAM:

64GB DDR5-5600 SO-DIMM (Dual Channel)

Storage:

4TB SSD

Ports:

1x 2.5G LAN, 2x Thunderbolt 5 (Type-C), 1x USB 3.2 Gen 2 Type-A, 1x HDMI 2.1, 1x 3.5mm Combo Audio, 2x USB 3.2 Gen 2 Type-A.

Wireless:

Intel Wi-Fi 7 (802.11be) 2x2 + Bluetooth 5.4

Weight:

7.27 lbs (3.30 kg)

Dimensions:

15.71 x 11.73 x 0.93 ~ 1.26 inches (399 x 298 x 23.5 ~ 32.0 mm)

Asus ROG Strix Scar 18 review: Design
  • Mammoth 18-inch footprint
  • Droolworthy, pixel-packed high-contrast screen
  • Fun AniMe Vision display

Let’s start with the obvious: this is not a small laptop. 18 inches is basically the most humongous laptop you can buy at the moment, and it’s not exactly portable. It won’t fit into a standard backpack, and it probably won't leave your house outside of a suitcase.

At 7.27 lbs (3.3 kg), just lifting the unit is a workout in itself, and the power brick adds another 2.2 lbs (1 kg), so you’ve got a hefty unit that you won’t be pulling out in a café, unless it has very stable tables. But it’s a gaming laptop, and portability is at the very bottom of the requirements here.

As is subtlety. Instead of at least trying to design something that gives a lighter, airier impression, Asus has leaned into an angular, beefy design language. Add in the RGB LED lighting strip around the bottom edge, and the entire thing looks like it’s about to take off and become a new target for the Rebel Alliance.

(Image credit: Future)

That’s not the only lighting trick the ROG Strix Scar 18 keeps up its sleeve: on the rear of the screen, there’s what Asus dubs AniMe Vision, essentially a programmable Wall Street-style ticker tape readout for your laptop. It’s monochrome, and very low-res, but it’s actually really neat: you can use Asus’ software to customize what it says, so you can broadcast scrolling messages of love or hate, depending on who you’re sitting opposite.

On the other side of this screen is the main display itself, which is thankfully higher-resolution and more colorful. Much more colorful. While not full ultra-HD, its 2.5K resolution (2560 x 1600) and 240Hz refresh rate is a perfect match for an 18-inch screen. It’s also mini-LED, which makes colors utterly pop, even from oblique viewing angles.

(Image credit: Future)

Asus has included a keyboard replete with enormous trackpad and full-size number pad. There’s a decent amount of depth to the keys, and while there’s no mechanical clunk, they’re responsive and comfortable enough for long gaming and typing sessions.

The trackpad doesn’t quite meet Apple’s almost supernaturally interactive standards, and it’s prone to accidental touches, but most users will likely be pairing this laptop with a mouse. The speakers, too, are a little disappointing and tinny.

(Image credit: Future)

On the underside of the laptop is a grill of air intakes for cooling, and this whole panel can be detached without tools so you can upgrade the RAM and SSDs. Around the edge of the laptop there’s a gamut of ports: three USB 3.2, two USB-C/Thunderbolt 5, HDMI, Ethernet, 3.5 mm headphone jack, SD card slot — no, wait, not an SD card slot, just a vent that looks an awful lot like an SD card slot. Cheeky! I would have loved an SD card slot on a laptop of this size and price.

  • Design: 4 / 5
Asus ROG Strix Scar 18 review: Performance
  • Nvidia RTX 5090 is an absolute beast
  • Phenomenal DLSS support
  • Gets crazy loud in Turbo mode

Having such a huge screen works wonders here; its slightly wider aspect ratio adds a movie-like expansiveness to more cinematic games.

The test laptop we received packs an Intel Core Ultra 9 290HX Plus processor, an Nvidia GeForce RTX 5090 laptop GPU with 24 GB VRAM. Memory weighs in at a substantial 64 GB DDR5 dual-channel, and I’m never going to come near filling up the 4 TB SSD.

It has the gaming panache where it counts. 007 First Light hits 62 FPS on ultra graphics settings, with Bond’s glassy eyes melting my heart at any given opportunity. Lower the quality and the frame rates hit new heights — up to 170 FPS in 007, and it still looks really good, if a little last-gen.

Asus ROG Strix SCAR 18 Benchmarks

3DMark: Night Raid: 84,346; Fire Strike: 41,166; Time Spy: 21,574; Port Royal: 14,368
Geekbench 6: Multicore: 26,101; Single-core: 2,340
Total War: Warhammer III: Mirrors of Madness (1080p, Ultra): 176.7 fps; (1080p, Low): 411.7 fps
Cyberpunk 2077: (1080p, Ultra): 129.8 fps; (1080p, Low): 149.9 fps
Dirt 5: (1080p, Ultra): 197.2 fps; (1080p, Low): 296.0 fps
PCMark 10 Battery Life: 3 hours and 3 minutes

Likewise, the hard, ray-traced light of Pragmata looks gorgeous when it hits those solid surfaces, and I was able to turn ray tracing on and hit 60 FPS at full res, which is just right. Diana’s flowing locks alone are worth the price of admittance.

Asus includes preset modes (Silent, Performance, Turbo), which can be toggled in-game with a handy function key, making it easier to unlock higher frame rates — I watched 007: First Light jump from 100 to 150 FPS (at low settings). However, Turbo also makes the fans kick in and, despite Asus’ vapor chamber cooling the whole thing becomes a bit jet engine-like.

(Image credit: Future)

Raw settings are only half the story now, though. Nvidia’s 5090 includes DLSS, and this is a quick and easy shortcut to match the 240hz refresh rate of Asus’ glorious panel. In 007: First Light, I can bump the settings all the way up and hit an epic 225 FPS, bringing it back to cinematic life.

I also had a quick dabble in my interminable Adobe Premier/After Effects project, and this is a laptop that’s as suited to creators as it is to gamers. 3D tracking, which was a stumbling block for my 2023 MacBook Pro, is almost instantaneous here, and it can take on 8K video timelines without missing a beat. Its game-centric looks may not please all designers, but for streamers and YouTubers it’s good to know it’s got the graphical grunt where you need it.

  • Performance: 4.5 / 5

(Image credit: Future)Asus ROG Strix Scar 18 review: Battery life
  • Expect five hours-ish for general computing
  • Drops substantially when gaming

For a high-performance gaming laptop, battery life is actually pretty impressive. PCMark 10’s battery life benchmark, which simulates general day-to-day computer use like you’re some idealized executive who’s on Zoom calls that decide the fate of the planet, came in at five hours and three minutes. Running a 1080p video on a continuous loop in VLC gave a five-hour and 18-minute result — exactly enough time to watch all three Venom movies, and, wait, there’s a third Venom movie?

(Image credit: Future)

Heavy gaming sessions inevitably drag the battery life down to the sub 90-minute duration, so you’re never going to want to be far from a wall socket.

  • Battery life: 4 / 5
Should I buy the Asus ROG Strix Scar 18?

Attribute

Notes

Score

Features

Outstanding display tech, with easy upgrade potential

4.5

Performance

Desktop-grade productivity and gaming frame rates

4.5

Design

Bold, heavy aesthetic that trades portability for performance

4

Value

You’ll need a wallet as large as the PC itself

3

Buy it if…

You demand uncompromised gaming power
Combining the RTX 5090 GPU and Core Ultra 9 CPU creates a Double Dragon-esque combo that will take on any game with ray tracing cranked up.View Deal

You want a stunning desktop replacement
18-inches hits the sweet spot for a laptop that’ll rarely leave the desk, feeling expansive and cinematic, and the 240Hz refresh rate and brilliant brightness are exceptional here.View Deal

You are a creator who needs desktop-class grunt
So long as you’re OK with the brutalised aesthetics, with 64GB of RAM and a 4TB SSD, this machine chomps through 8K video rendering, 3D tracking, and intense multitasking.View Deal

Don’t buy it if…

You need a laptop that you can actually travel with
At over 7 pounds (not counting the hefty 2-pound brick), this is an absolute unit that will struggle to fit in a normal backpack or survive on a café table.

You're sensible with money
Crossing the five-thousand-dollar threshold makes this a luxury purchase. Solid gaming performance can still be had for half the price.

You want high-end built-in speakers
For a laptop this large and expensive, the speakers are surprisingly tinny and weak, meaning you'll almost certainly want to pair it with a headset.

Also consider

Razer Blade 18
A sleeker, aluminum-unibody alternative that offers a similarly premium 18-inch display and high-end specs, but usually commands an even steeper price tag.

Read our full Razer Blade 18 review

Lenovo Legion Pro 7i
An understated and slightly smaller option that strikes a far better balance of performance-per-dollar – even if it lacks the ostentatious design of the Scar 18.

Read our full Lenovo Legion 7i Gen 10 review

How I tested the Asus ROG Strix Scar 18

(Image credit: Future)
  • Used as my daily driver computer for a month
  • Tested according to TechRadar’s guidelines
  • Put through its paces with games including 007 First Light, Pragmata, and Forza Horizon 6

To truly put the Asus ROG Strix SCAR 18 through its paces, I lived with it as my main computer for several days, testing it both as an everyday workstation and a high-end gaming battlestation. I made sure to test the system in various power profiles, monitoring the thermal performance and fan volume during long gaming sessions.

All benchmarks were run using TechRadar's standardized testing parameters—V-Sync was disabled in the Nvidia control panel, the power mode was set to "Best Performance" in Windows, and the laptop was fully charged and plugged into its massive 450W brick to unlock its maximum potential.

Categories: Reviews

Avatar Aang: The Last Airbender should be released in IMAX rather than on Paramount+ — the jaw-dropping animation is easily the best part of the hero's return

Mon, 07/20/2026 - 10:00

If a big studio movie gets leaked online in its high-quality entirety long before it's supposed to be released on a major streaming service, you know that the schedule and strategy for both have gone completely wrong.

Alas, this is exactly what happened to Avatar Aang: The Last Airbender back in April 2026, causing the release date to be brought forward by three months to July 25. On top of this, Paramount+ has relented to a dogged campaign by fans to get the new movie screened in theaters, compromising on a limited theatrical release in New York and LA between July 25 and 30.

In essence, Avatar Aang: The Last Airbender had been badly done by long before this review embargo had even lifted. Though the original cartoon had millennials in a chokehold in the early 2000s, Netflix has now swept in to control the public's perception of the IP with its continuing live-action series.

If you're of the same school of thought as me and find that the real-life Avatar: The Last Airbender is missing something, you've been yearning for the return of the animation. Now it's here... well, it feels like a misshapen birthday cake that's melting in the sun.

Between its abysmal release strategy and a storyline that's not under scratch, Aang's first return in two decades is a massively missed opportunity. But if you're prepared to put up with the issues, some nuggets of gold are still waiting to be found.

I'm completely floored by Avatar Aang: The Last Airbender's animation — but that stings

Here's a brief rundown of what actually happens during the 99-minute runtime. Thirteen years following the defeat of Fire Lord Ozai and the end of the Hundred-Year War, Avatar Aang (Eric Nam) discovers a surviving airbender named Tagah (Dave Bautista) and learns of a powerful staff that could restore his culture. With the help of his friends, they embark on a global quest to find the relic before a group called The Denied can claim it and upend the peace they fought to achieve.

When hours upon hours of handcrafted artistry are poured into something we get to watch, it's as if magic is unfolding in front of our eyes. Unsurprisingly, the visuals are the strongest element of Avatar Aang: The Last Airbender, to the point where I'm still thinking about them days after watching.

The new movie's understanding of perspective, movement, and detail is absolutely astonishing, moving through the Four Nations with such awe-inspired wonder that you want to live in each frame, like a kid visiting Disney World for the first time.

But this comes with a bittersweet feeling: are we really getting the best out of these gorgeous details on an iPhone, tablet, or even a TV? To me, Avatar Aang: The Last Airbender is clearly a movie that needs to be seen and appreciated on the biggest screen possible, something which a streaming service can never truly allow for.

Hooray for accessibility, but Paramount has completely fudged the wider potential for its release. Why does the eventual theatrical release feel so unnecessarily limiting when demand for it feels sky-high? If you are one of the lucky few with tickets and the right geographical location, let me know if I'm right about this.

Avatar Aang: The Last Airbender's character reunion is the most special part of the new movie

(Image credit: Paramount+)

In fact, the animation is so good that you almost sidestep the fact that the film's storyline is almost non-existent. Tagah might look like a character who is obviously voiced by a ripped muscle man like Bautista, but he offers very little in the way of new satisfaction.

For starters, he is discovered buried alive in ice — exactly like how Aang was at the start of the series — which feels far too on the nose. He encourages Aang's unquenchable first to learn (which is a beautiful, life-affirming reminder), but would the film otherwise be different if Tagah vanished? I doubt it.

But never mind! We're here for the reunion for the core team, bringing back the core team of Aang, Katara (Jessica Matten), Soukka (Román Zaragoza), Toph (Dionne Quan), and Zuko (Steven Yeun), who are 13 years older than when we last saw them.

Time may have changed how they look, but their goofy and fun-loving personalities definitely haven't. The animation is able to capture the level of confident silliness that Netflix's live-action series has always lacked, meaning that their well-worn-in camaraderie feels like sinking into a warm bath. What's more beautiful than forgetting your troubles in a fun, fantastical world like this?

Watching the group laugh, play, and discover new things almost overshadows everything that's gone wrong with Avatar Aang: The Last Airbender... almost. But when the storyline dips, you're quickly reminded of just how badly the creative teams have done by the older Aang's comeback.

Next time Avatar: The Last Airbender is revived, and it inevitably will be, let's let the fans be in control. They've got the biggest chance of getting the most right, after all.

Categories: Reviews

Kapwing AI video editor review

Mon, 07/20/2026 - 06:15

Kapwing is among the best AI video editors today. It allows you to create videos with simple text prompts and generate lively AI characters to build detailed storylines.

Trusted by brands like Google, Dyson, and Spotify and used by thousands of content creators across YouTube, TikTok, and digital marketing platforms, Kapwing has quickly grown to become one of the industry’s favorite video generation and editing software.

In this article, we put Kapwing to the test to see whether its features perform as advertised. Read on to learn about our real-world experience with Kapwing, its best features, and the alternatives worth considering if it doesn’t fit your needs.

Kapwing: Plans and pricing

You can get started with Kapwing through its free-forever plan, which allows up to 30 minutes of video exports per month in 720p resolution, with each video limited to a maximum length of one minute. There’s also a 2GB file upload limit, along with access to editing and AI-powered tools such as auto-subtitling, auto-translation, and text-to-speech, albeit with limited usage caps.

We also like that you get a fair share of collaboration features, such as project link sharing and commenting, allowing you to edit videos collaboratively with your team. However, the free plan is meant primarily for testing the platform rather than full-fledged use.

If you want to get the most out of Kapwing, you’ll have to upgrade to one of its paid plans. Its Pro plan starts at $16 per member per month and offers excellent value for money. The plan supports 4K video exports with unlimited monthly exports and a maximum video length of 120 minutes.

You can check it all out by clicking here.

(Image credit: Kapwing)

The AI editing tools also come with higher usage limits. For example, you get up to 1,000 minutes of auto-subtitling and 500 minutes of auto-translation per month. Besides this, the plan adds several premium tools, including video and image background removal, video stabilization, and the ability to add your brand kit and custom fonts to your projects.

Next is the Business plan, designed for teams that need more advanced content creation workflows. Costing $50 per member per month, it includes up to 4,000 minutes of auto-subtitling, 2,000 minutes of auto-translation, 2,000 minutes of Clean Audio per month, and 130 minutes of Lip Sync. The remaining features are largely the same as those in the Pro plan.

Finally, there’s an Enterprise plan for large organizations that need priority support and custom billing. However, you’ll need to contact the Kapwing team directly to obtain a customized quote.

Kapwing: Features

Kapwing packs a good mix of both AI-powered and traditional video editing features. Let’s start with its AI capabilities. Right off the bat, you’ll notice that you can generate AI videos with a simple text prompt. Its video generation interface is pretty similar to that of chatbots like ChatGPT or Gemini. You simply enter your prompt and click the Send button. You can also attach media as a reference for the AI engine.

Besides video generation, Kapwing offers several other AI tools. For instance, Translate Video lets you convert the audio in a video from one language to another. There’s also a handy Smart Cut feature, which automatically removes awkward silences from your videos, giving them a more polished finish. You can also generate AI characters, which come in handy if you want to build a consistent storyline or reuse the same character across multiple AI-generated videos.

Kapwing gives you more options when generating AI characters. To get started, click the @ icon in the chat window and select the type of character you want to generate. The available options range from everyday characters like a baby or a cheerleader to more outlandish ones such as a cyborg, Dracula, or a dragon.

You also have the option to choose more than one character type. For instance, you can select both "baby" and "Dracula" if you’re trying to create something unique. Here’s the Baby Dracula character we created using Kapwing.

(Image credit: Future)

Apart from this, you’ll find several other options, such as Image to Video, which lets you convert a still image into a short video clip, and Text to Video, where you can enter a full-fledged script and allow Kapwing to generate an AI video for you. There’s also a handy Video Stabilizer tool, which is useful for fixing shaky footage or videos with heavy motion blur.

For longer video formats, Kapwing also supports Video Storyboards, where you can create a timestamped outline of every scene. The more traditional tools include text-to-speech, video dubbing in 40+ languages, resizing videos from one aspect ratio to another, and adding subtitles to videos.

Kapwing: Interface and in use

Almost all of Kapwing’s features are nestled into a central dashboard, with the video editor in the center, a long list of features on the left-hand panel, and an editing panel on the right. You can simply upload your media or drag and drop any video or image you want to edit. After that, you may need to spend a little time exploring the interface to find the exact feature you’re looking for.

For instance, you can access features such as Text, Audio, Subtitles, Transcript, Translate, AI Voice, and more directly from the left-hand panel. There’s also a help function that helps you quickly locate settings you can’t find right away.

(Image credit: Future)

The editing experience was pretty smooth. For instance, we tried adding text to an AI-generated image, and the process was seamless. We could easily change the font, color, size, and other formatting options from the panel on the right.

Note that the right-hand panel changes dynamically depending on the tool you’re using. For example, if you select Translate, you’ll see language options appear on the right.

Overall, like any video editing software, Kapwing comes with a slight learning curve. However, in our experience, it was much easier to use than many legacy editing tools. The interface is modern, sleek, and highly responsive. We didn’t experience any system lag or timeouts during our testing.

(Image credit: Future)

In addition to the main editing window, there is also a dedicated My Workspace page in Kapwing. Here, you can find all your recent projects at the bottom, along with a dedicated set of tools highlighted on the main page. If you’re using a Business plan, you’ll also see your team folders on the left-hand panel. Similarly, Settings, Brand Kit, and your Media Library are all accessible from the same panel.

Kapwing: How we tested

We tested the free version of Kapwing across multiple accounts to evaluate its AI capabilities more thoroughly. To start, we tried generating an AI video using the following prompt:

“A woman in a red coat walks across a rain-soaked city street at night, neon signs reflecting in the puddles, camera slowly tracking alongside her.”

(Image credit: Future)

Kapwing got to work as soon as we hit Send, first generating a summary of the scene we wanted to create. After that, it produced a five-second video within seconds. Although Kapwing indicated that the video would be seven seconds long, the actual output was five seconds.

(Image credit: Future)

We then edited the same video using Kapwing’s video editor, experimenting with features such as adding text, audio, and subtitles. Since the free plan is fairly limited, we had to use more than two accounts to fully test its capabilities.

What stood out to us was how quickly Kapwing generated both edits and the source video. Everything was processed quickly, which is a clear advantage.

Kapwing: Alternatives

While Kapwing is a capable AI video generator and editor, it is not the most affordable option out there. For instance, Adobe Firefly costs $8.49 per month when billed annually and comes with features comparable to Kapwing. You get access to popular video models such as Google Veo 3.1 and Runway Gen-4.5, allowing you to create up to 50 and 11 videos, respectively.

Adobe Firefly truly shines with its workflow features, allowing creative teams to brainstorm visual concepts on virtual boards. You can also process thousands of files at once using bulk actions such as removing backgrounds or cropping images. That said, Firefly lags a bit behind when it comes to video editing, as many of its editing features are still in beta.

It's also not ideal for long-form content generation, as most models cap video lengths at three to five seconds. On the bright side, you also get access to Adobe Express Premium and Photoshop with all paid plans.

Veed is another capable competitor, with prices starting at $12 per month, roughly 20% cheaper than Kapwing. It also offers a free plan, which appears to be more generous than Kapwing’s. For instance, you can try features like removing silences, background removal, auto-edits, social media character generation, and voice cloning on Veed’s free plan – most of which are not available on Kapwing’s free tier.

Kapwing: Final verdict

Kapwing is one of the best AI video generation and editing platforms available, with a strong mix of both traditional and AI-powered tools. Not only can you generate AI videos from simple prompts, but you can also transcribe videos, translate them into 40+ languages, create AI characters, and edit videos from a central dashboard.

Kapwing is also easier to use than many other platforms on the market, although there is still a slight learning curve involved. That said, there are plenty of video tutorials and help center articles available to help users get through this phase.

However, Kapwing can be a bit on the expensive side, especially for personal users, which is why you may want to consider alternatives like Adobe Firefly or Veed.

We've tested, reviewed, and rated a range of video makers and editors, including the best video editing software, the best video editing apps and the best free video editing software.

Categories: Reviews

I've reviewed or covered about 17 power banks — and Iniu's chic MagSafe 45W is the first one that feels like it actually has some personality

Mon, 07/20/2026 - 06:04
Iniu SnapGo Air 10000mAh Power Bank review

The Iniu SnapGo Air 10000mAh Power Bank is a svelte, pocketable MagSafe power bank. Not only does it include two USB-C ports that can muster up to 45W charging solo or 15W together, it can also charge 25W wirelessly and comes with a discrete cable that doubles up as its handle.

When it comes to looks, the majority of power banks usually take the form of functional cuboids. However, the SnapGo Air 10000mAh Power Bank actually feels like it has some personality. To start, it's available in a range of colorways: Soft Lilac and Sunset Orange are seriously eye-catching, while I love the fact that the Metallic Mocha hue I tested here matches my Desert Titanium iPhone 16 Pro.

There are more practical design flourishes, too. The SnapGo Air 10000mAh Power Bank is super slim compared to many of the best power banks. It measures just 0.5 inches / 13.8mm thick, which is almost half the thickness of my chunky 0.91 inch / 23mm Ugreen 10000mAh Magnetic Wireless Power Bank, and even slimmer than the 0.58 inch / 14.7mm Anker MagGo Power Bank (10K, Slim). The SnapGo Air is a little wider as a result, measuring 2.76 x 4.13 inches / 70 x 105mm, but by having the MagSafe connection extend out a tiny bit from the power bank’s bezel, it keeps its height to a minimum.

As I mentioned, another neat touch is the doubling of the Iniu’s braided USB-C cable as the power bank’s loop. While this isn’t a unique feature by any means — for example, the recent UGreen 10,000mAh Magnetic Wireless Power Bank Qi2 25W utilizes a similar system — it's far more convenient than having to bring a separate cable with you, and makes it easier should you want to opt for that 45W fast-charging over the slower 25W MagSafe charging.

Like a lot of the newer power banks, the SnapGo Air also features an LCD screen, which displays the battery’s remaining charge. This is far more useful than those models that only have a series of LEDs to indicate battery status, where you're left guessing whether the power bank has 51% or 74% charge left. The display here is subtle, tucked away down by the device’s two USB-C ports, and I really appreciate the more granular insight it provides on the juice left in my device.

(Image credit: Future)

So how does it perform? Perhaps, unsurprisingly, pretty well! That 45W max charging isn’t unheard of, but it still beats a number of devices, with many higher output models likely to cost you a lot more — although the Anker 20,000mAh 87W Power Bank is currently available for a steal at just $69.99 / £49.99 / AU$119.99. MagSafe charging is capped at 25W by Apple, so naturally you won’t get a huge variation in charging speed there; but the reality is you're trading speed for convenience with wireless charging.

In terms of the numbers, I first put the SnapGo Air to the test by fully charging the 5,200mAh battery of the OnePlus Nord CE5 from 0% to 100% using its 45W charging. That took 1 hour and 24 minutes, which is pretty much bang on what I’d expect given the phone’s capacious battery. Unfortunately, only 29% of the Iniu’s 10,000mAh capacity remained after charging, which is a significant drop.

Meanwhile, when I used its MagSafe charging to juice up an 3,095mAh iPhone 13 Pro, it took 2 hours and 25 minutes — that’s considerably slower, but not surprising given the max wattage available to the iPhone 13 Pro during MagSafe charging is just 15W.

When it comes to powering the SnapGo Air back up, its 27W charging saw this take just 1 hour and 46 minutes. Given its 10,000mAh total capacity, that isn't bad — there are phones with batteries half that size that take nearly as long to charge up.

All told, the Iniu SnapGo Air 10000mAh Power Bank is a pretty strong power bank. It charges your devices fast, whether you’re using its built-in cable or 25W MagSafe charging; its LCD screen is super useful; and the unit itself is nicely compact. Moreover, it’s a seriously stylish power bank in a market crammed with charcoal-hued cuboids, yet comes in at a very reasonable price. Ultimately, it’s a very hard product to find fault with.

(Image credit: Future)Iniu SnapGo Air 10000mAh Power Bank review: price & availability
  • Launched on May 15, 2026
  • List price of $54.99 / £49.99 / AU$69.99
  • Range of attractive colorways

Having launched on May 15, 2026, the Iniu SnapGo Air 10000mAh Power Bank is widely available. It comes in a great range of colors — alongside Lunar Silver and Space Gray are a medley of iPhone-mimicking hues such as Midnight Navy, Metallic Mocha and Sunset Orange.

You can pick it up for a list price of $54.99 / £49.99 / AU$69.99, which is pretty keenly priced given its spec. For example, the Anker MagGo Power Bank (10K, Slim) can only muster 30W over a wired connection, compared to the Iniu’s 45W, yet costs $79.86 / £69 / AU$97.99, showing what a good deal the Iniu SnapGo Air actually is.

(Image credit: Future)Iniu SnapGo Air 10000mAh Power Bank review: specs

Capacity

10,000mAh

Total wattage

45W wired / 25W wireless

Number of ports

2

Port type(s)

USB-C (2x input/output) + Detachable GoCord USB-C cable

Wireless charging

Yes, Qi2.2 certified (Up to 25W magnetic)

Weight

196g / 6.9 oz

Dimensions

4.2 x 2.8 x 0.5 inches / 10.7 x 7.1 x 1.38 cm

(Image credit: Future)Should I buy the Iniu SnapGo Air 10000mAh Power Bank?Buy it if…

You want seriously fast charging
For a power bank this compact, it’s rare you’ll find charging speeds faster than its 45W. Able to top up a 5,200mAh phone in 1 hour and 24 minutes using its cable, it’s an impressively speedy power bank.

You’re fed up of drab-looking power banks
Arriving with an LCD screen and in a range of gorgeous colors that include everything from the iPhone mimicking Metallic Mocha or Sunset Orange to Soft Lilac or Space Gray, the Iniu sure is a looker.

Don’t buy it if…

You have a phone capable of ultra-fast charging
If your phone can handle more than 45W — for example, the OnePlus 15 with its ludicrous 120W charging — you might want to consider a power bank that offers faster charging speeds.

You want to be able to charge your phone multiple days running
At 10,000mAh, the SnapGo Air will comfortably charge most phones more than once. But if you’re going away for days and will need multiple charges, you might find a larger capacity is a better fit.

Iniu SnapGo Air 10000mAh Power Bank review: also consider

Anker 737 Power Bank (PowerCore 24K)
If you need to top up your phone more than once or your phone is capable of ultra-fast charging, the Anker 737 Power Bank (PowerCore 24K) is definitely worth considering. It has a huge 24,000mAh capacity, which would allow you to top up most phones around four times, while that insane 140W charging can rapidly juice up even the thirstiest phones on the market. Read our full Anker 737 Power Bank (PowerCore 24K) here.

Categories: Reviews

InVideo AI video editor (2026) review

Mon, 07/20/2026 - 05:10

While there are several AI image and video generation tools on the market, InVideo differentiates itself by carving out a dedicated niche. Built from the ground up for creative teams, filmmakers, and professionals, InVideo offers the easy-to-use conversational AI Agent One, which helps you create highly professional videos using simple English instructions. This is probably why it's trusted by teams at Netflix, Nvidia, Meta, LinkedIn, and Google.

In this article, we put InVideo to the test to see if it lives up to its claims. Read on as we try out its top features and evaluate its pricing, ease of use, and compare it to the best AI video editors to help you find out if it's the right choice for your needs.

InVideo: Plans and pricing

You can check out InVideo by clicking here.

InVideo offers as many as four individual plans and two plans for teams and enterprises. One good thing about InVideo is that all of its plans come with access to more than 200 AI models, including Seedance 2.0, Veo 3.1, Nano Banana Pro, ElevenLabs Music, and Kling 3.0. Plus, every plan includes all the features that InVideo has to offer, the only difference is the usage limits.

The paid plans start at $17 per month (Plus plan), which comes with 75 credits per month. Here, you get 20 GB of storage, access to 100 iStock assets, and four AI avatars and voice clones. The next plan, priced at $85 per month (Max), comes with 390 credits, 16 AI avatars, 100 GB of storage, and access to 200 iStock assets.

(Image credit: InVideo)

The next two plans let you choose the number of credits you want. For instance, the Generative plan starts with 800 credits per month at $170 per month and goes all the way up to 8,000 credits for $1,700 per month. Here, you can create 40 AI avatars and voice clones, along with 2 TB of storage and access to 1,000 iStock assets (800-credit plan).

Lastly, the Elite plan, meant for individuals with large AI generation and editing needs, starts at 4,250 credits per month for $900 per month and goes all the way up to 42,500 credits per month for $9,000 per month. Here, you can create 200 AI avatars, get 10 TB of storage, and access up to 5,000 iStock assets (4,250-credit plan).

For businesses, there are two plans: Team and Enterprise. The Team plan starts with 160 credits per seat per month at a cost of $40 per month, while you'll need to contact InVideo's sales team and book a demo to receive custom pricing for its Enterprise plan.

As is evident, InVideo is one of the more expensive AI generation and video editing tools out there. Even its Max plan ($85 per month) is significantly more expensive than the highest-tier plans of competitors like Veed, Kapwing, Fliki, and Filmora.

Moreover, InVideo also offers a free plan with limited credits, allowing you to test out the platform's capabilities. However, the free plan is fairly limited compared to competitors like Filmora and is best suited for testing the platform rather than using it on a full-fledged basis.

InVideo: Features

Although InVideo commands a high price, there's a good reason for it. You can generate AI videos and images with InVideo, just like any other AI generation tool. InVideo calls this its Autopilot feature. However, the problem with one-time generation is that the context gets lost after a few back-and-forth edits.

By the time you're on your fifth or sixth edit, your character may have changed entirely, and the scene is nothing like what you initially wanted. This is a problem common to almost all AI generation tools on the market.

This is where InVideo's all-powerful Agent One comes into the picture. Designed for filmmakers and high-end marketing professionals, Agent One is a full-fledged AI assistant that can not only generate images and videos for you, but also remember the context of your scene and create professional, cinematic short videos and even full-length short films (more on that later).

(Image credit: InVideo)

Additionally, InVideo has an extensive collection of workflows, which are templates you can choose from to get started on a new project.

These include explainer videos, animated videos, script-to-video, promos, advertisements, listicle videos, faceless explainers, educational videos, and more.

You can also create animated videos in different styles, such as Disney Pixar-style, claymation, Lego, anime, and more.

(Image credit: Future)

Plus, you'll find a new Trends feature in InVideo that keeps you updated on the latest trends in video creation. This includes camera controls, effects such as Split Self and Drip Flip, as well as motion graphics like Highlight Typography and Glass Motion Graphics. There's also a dedicated Advertising Studio that lets you create high-end professional ad videos for any product of your choice in different styles.

InVideo: Interface and in use

Despite its high-end, professional features, InVideo is surprisingly easy to use, making it beginner-friendly. Its Agent One is as easy to use as a conversational AI.

You first have to provide it with a treatment, which is nothing but your idea, vision, or script, including the context of the video you want to generate. This can include character descriptions, environments, buildings, and a beat-by-beat story timeline.

The heart of Agent One is its Context tab, where you can provide additional details about your project. You'll find various content options under this tab, including About This Project, where you'll add the context of your video, its script, and the ultimate goal.

(Image credit: Future)

Then there's InVideo Rules, where you can enter standing instructions on the pacing or format of your video, along with the tone and specifications of the characters you want to use. There's also a dedicated World Building tab, where you can describe in detail the visual language, settings, and continuity you want to maintain throughout your video.

You can also upload images, references, research, briefs, and scripts in the Inspiration and Knowledge Bank tabs.

Unlike other AI generation platforms, which aim to keep your prompts as short and direct as possible, Agent One encourages you to be as detailed as possible. The more context and detail you provide, the better your output is likely to be.

Besides this, you can also select the layout of the video you want. InVideo gives you many more options than some of its competitors. For instance, you can choose between square, extra tall, portrait, landscape, and more. Plus, you also have a choice of output resolution, ranging from 1K to 4K.

(Image credit: Future)

Overall, the experience is similar to that of a director sitting in a chair talking to a creative team. The only difference is that everything is packed into a single AI agent.

InVideo: How we tested

We reviewed the breadth of InVideo's capabilities. In particular, we tested its Autopilot feature, which lets you create videos with a single prompt. We gave it the same prompt that we used while testing the other AI video editing software:

"A woman in a red coat walks across a rain-soaked city street at night, neon signs reflecting in the puddles, camera slowly tracking alongside her."

One thing to note is that before generating a video, InVideo gives you a lot of options to customize your output. This includes selecting the duration of the video as well as the platform you're generating it for, such as Instagram Reels, YouTube, or TikTok.

(Image credit: Future)

There's also a hidden Additional Options button in the bottom-left corner, where you can customize settings such as visual styles. You also get an option to choose an AI character from InVideo's free AI actors.

When we had everything in order, we hit the Generate button.

Now, InVideo takes arguably the longest time to process a project and generate an output, noticeably longer than the likes of CapCut or Veed. However, the outputs are worth the wait. InVideo created a pretty realistic-looking Instagram Reel of a woman walking on a rain-soaked street.

(Image credit: Future)

Besides this, we also tried using InVideo's Agent One, giving it the same prompt. Although it did create various character options for us in different styles, we couldn't proceed further because it required more credits than the free plan offered.

(Image credit: Future)

However, Agent One's conversational-style editing makes it pretty simple to use. You just have to write down what you're thinking, and Agent One processes your thoughts into a clean script, building each scene bit by bit.

InVideo: Alternatives

InVideo is designed for professional filmmakers or large enterprises that need to create realistic, professional AI videos. If you're looking for a simple video editing software simpler, you could opt for a tool like Veed, which is one of the most complete AI content generation and editing platforms.

With Veed, you also get access to various AI models such as Seedance, PixVerse, and Veo 3.1, which can generate text-to-video, image-to-video, as well as more than 60 diverse AI avatars.

Veed also has one of the best subtitle offerings on the market, keeping up with the latest social media trends. That said, its free plan is a bit limited in what you can do, which is why you'll likely have to upgrade to one of its paid plans, starting at $12 per user per month.

If you're looking for something more affordable, you can go with Filmora. It starts at just $4.17 per month, and even its highest-tier plan costs only $8.33 per month. Filmora is also a professional-level video editing platform that has recently integrated a wide range of AI features into its repertoire.

You get access to more than 2.9 million creative assets, including filters, transitions, effects, music, and stock media. It has also introduced advanced AI features such as AI Audio and Video Extender, which can extend short audio clips and videos for smoother transitions.

There's also Animated Charts and Lens Correction, which come in handy while editing action camera or wide-angle footage. Plus, you get more than 10,000 ready-made templates and over 500 AI-powered effects.

However, Filmora is one of the more difficult tools to use and comes with a bit of a learning curve. Once you get the hang of it, though, it is one of the best tools available for AI-powered video generation and editing.

InVideo: Final verdict

InVideo is a professional-level AI generation and video editing tool designed for filmmakers, advertisers, and professionals working in the creative industry. It offers access to more than 200 AI models, including Veo 3.1 and Nano Banana Pro.

InVideo comes with the powerful Agent One, a conversational AI that not only generates AI videos and images for you, but also works back and forth with you to create highly realistic, cinematic short videos.

Moreover, Agent One is surprisingly easy to use, almost as easy as conversing with a creative director and giving instructions. The best part is that you're not stuck engineering prompts to get the best output. Instead, you can focus on the creative aspects of your project while Agent One handles the rest.

That said, InVideo is one of the most expensive tools out there, with plans starting at $17 per month. If you're looking for something more basic or affordable, you can consider alternatives like Veed, Adobe Firefly, or Filmora.

We've tested a range of video makers and editors, including the best video editing software, the best video editing apps and the best free video editing software.

Categories: Reviews

Veed AI video editor (2026) review

Mon, 07/20/2026 - 04:50

Veed has quickly carved a name for itself in the AI video and image generation industry. Used by giants like Netflix, Google, P&G, and the BBC, Veed has grown into a full-fledged AI-powered video platform serving over 10 million monthly active users worldwide.

In our Veed review, we put the platform to the test and evaluate its top AI-powered creative features. We evaluate it first-hand, analyzing even its user interface, pricing, as well as how it compares to the best AI video editors available today. Read on to find out if it's the right choice for you.

Veed: Plans and pricing

Veed offers a handy free plan, which comes with around 120 credits, 2 GB of storage, and an upload file size limit of 1 GB. You can export videos up to 10 minutes in length in 720p, with limited AI video generation within the available credits.

Additionally, AI video editing features such as filler removal, background removal, and auto-edits are all available on a try-once basis.

We found the free video editing package to be fairly limited and ideal only for testing out what Veed offers, rather than using the platform long term.

To get the most out of Veed, you'll need one of its paid plans, starting with the Creator plan, priced at $12 per user per month. Here, you can export videos in 1080p quality with 5 GB of storage.

You can check it out by clicking here.

(Image credit: Veed)

A good thing is that there is no upload file size limit, along with unlimited access to auto subtitles and various subtitle styles. AI image generation limits are also increased to 300 images per month, compared to 100 images with the free plan.

Along with this, you get access to all AI video editing features except Text Behind Person, which is still available only on a try-once basis. Subtitle translation and AI dubbing are also limited to a try-once basis. This is also the first plan where you get limited access to Brand Kits and unlimited access to stock templates.

The Pro plan, priced at $22 per user per month, comes with 30,000 credits, enough for creating 6,000 AI videos. Here, you can export videos in 4K quality, along with unlimited AI image generation and access to all AI video editing features. Subtitle translation and AI dubbing also come with higher limits of six hours per year.

Then there's the Studio plan, offering 180,000 credits for $39 per user per month. This plan comes with unlimited storage, along with 12 hours per year of subtitle translation and AI dubbing. You can invite up to five editors, compared to three in all previous plans, along with one reviewer. All other features are limited within the credit allowance that comes with this plan.

Lastly, there's the Enterprise plan for large organizations, where you can customize your credit allowances with unlimited access to almost all features that Veed has to offer. This is the only plan where you get priority support from Veed, along with a dedicated Customer Success Manager, onboarding, and training.

Veed: Features

Veed offers a good mix of both AI generation and video editing features. For starters, you can generate AI videos with simple prompts in up to 4K quality, depending on your plan. You get access to some of the best AI models, including Veo 3.1, Seedance, Halo, Luma Ray, PixVerse 4.5, and MiniMax.

Besides this, there are features like text-to-video, image-to-video, and the ability to create AI avatars. You get more than 60 diverse avatar options, along with support for more than 120 languages. However, unlike Kapwing, most of Veed's avatars are rooted in real-life people and appear more authentic. Besides AI avatars, you can also create custom social media characters, which can be used consistently across future content you create.

The best thing about Veed is the wide range of subtitle options you get. From manual subtitles available in all plans to auto subtitles, there are unlimited subtitle styles to choose from, along with dynamic subtitles that animate with speech. These subtitle options are perfect for modern social media content.

(Image credit: Veed)

Editing features are also plentiful, with options such as Clean Audio, which removes background noise, removing filler words like "uh" and "um," removing awkward silences from videos, fixing eye contact so that your character looks directly into the camera, background removal, and auto-editing.

Another impressive Veed feature is its collaboration and brand management. Depending on your plan, you can use custom Brand Kits to maintain brand consistency across all your videos. Plus, you can invite editors to any project to facilitate real-time collaboration.

Besides this, you also get access to custom templates, which help you get started with pre-built ideas, as well as custom watermarks. The Enterprise plan also allows you to create separate private workspaces, which come in handy for large organizations with multiple teams.

Veed: Interface and in use

Getting started with Veed is pretty easy. Once you create your account, you are taken to the dashboard, where you'll need to enter your first prompt to generate an image or video.

In the workspace, you can see your recent videos in the central pane, along with Brand Kits and the Asset Library on the left. To create a new image or video, you'll need to click New Project from the toolbar at the top.

(Image credit: Future)

Once you're on the edit screen, you'll see all the editing options on the left-hand side, such as Audio, Images, Subtitles, Text, and more. There are plenty of stock videos and images to help you get started with any new project.

There is a horizontal editing bar at the bottom of the edit screen. However, many editing features, such as effects, detaching audio, opacity, and filters, are hidden – you'll need to click the three dots in the center of your dashboard to access them.

(Image credit: Future)

A lot of the edits need to be made after the initial AI video has already been created, such as editing the script, choosing between voice-only and character-driven videos, or adding subtitles or music.

We would have liked to see these options before generating the video, as that would have resulted in more accurate output.

Overall, editing in Veed is pretty smooth, although it takes a bit of time to get the hang of the platform.

Veed: How we tested

To test out Veed's capabilities, we used its free plan, which allows up to 120 credits. We then gave it the following prompt:

"A woman in a red coat walks across a rain-soaked city street at night, neon lights reflecting in the puddles, camera slowly tracking alongside her."

(Image credit: Future)

Veed took a bit of time to interpret the prompt and generate the results, longer than Kapwing and Fliki. That said, the results were pretty satisfactory, and Veed stuck to the prompt word for word.

Another peculiarity of Veed is that it can create both character-driven and voice-only videos. This means it can convert the same script into a story narrated by one of its many characters or create an AI video with only voiceovers.

That said, exporting a single AI-generated video around five seconds in length can take anywhere between 40 and 50 credits. This means the free plan lets you export only around one AI video, which is certainly not enough for everyday use.

After this, we tried creating an AI image with Veed. One thing we liked is that it lets you choose the AI model before generating the content. For instance, the image we generated cost around 20 credits with Google Nano Banana Pro, whereas the same image cost only five credits with the FLUX.2 Pro model.

(Image credit: Future)

We used the following prompt for image generation:

"A weathered sea captain with a salt-and-pepper beard, wearing a vintage naval coat, painted in the style of a classical oil portrait."

You can also choose the image orientation – landscape or portrait – and the number of image variations you want (one, two, three, or four). There's also a pretty handy option to enhance your prompt, which comes in handy when you're short on creativity but need accurate results.

(Image credit: Future)

Veed created four images as requested. Each image has a built-in option to edit, download, or add to an existing project on the platform.

Veed: Final verdict

Veed is one of the most complete AI image and video generation and editing platforms you can opt for. You get a wide range of features, such as text-to-image, text-to-video, script generation, auto subtitles, dynamic editing, and more.

Using Veed is also pretty easy, making it ideal for beginner video editors, especially compared to a more complex platform like Filmora. Besides this, if you want to generate social media content, Veed offers one of the best ranges of subtitle styles available. It also offers one of the most culturally and geographically diverse selections of real-life AI characters.

That said, its free plan is pretty limited, allowing you to create only one or two AI videos, which isn't enough for regular use. However, its paid plans are in line with the industry standard and are comparable to Invideo or Kapwing.

Veed: Alternatives

Veed is certainly very good, but depending on your needs, there are a few alternatives you can consider.

The first is Fliki, which gives you a lot of control over the kind of content you want to generate. For instance, you can choose from various templates and video formats, along with the type of character you want in the video. Additionally, there's the option to add captions, choose an AI avatar, or add a voiceover before you generate the video.

Many of these editing options are also available with Veed, but only after the video has been generated, which can be a bit time-consuming. However, Fliki can export videos only up to 1080p quality, whereas Veed supports up to 4K quality.

If you're looking for something more affordable than Veed, you can consider Adobe Firefly, which starts at just $8.49 per month. It has one of the most generous free plans, with daily image and video generation limits that allow you to use it for a longer period.

Firefly also comes with infinite-canvas mood boards, which come in handy for teams looking to generate new content ideas. There's also a professional range of stock assets, such as images, videos, and templates.

That said, many of its features, such as AI avatar generation and video editing, are still in beta, leaving plenty of room for improvement.

We've tested a range of video makers and editors, including the best video editing software, the best video editing apps and the best free video editing software.

Categories: Reviews

I've spent weeks testing the Razer Hammerhead V3 HyperSpeed gaming earbuds and it's left me desperate to go back to my SteelSeries Arctis GameBuds

Sun, 07/19/2026 - 10:00
Razer Hammerhead V3 HyperSpeed: two-minute review

The first thing I thought when I pulled the Razer Hammerhead V3 HyperSpeed gaming earbuds out of their box was “Wow, these are ugly.”

Not exactly the strongest first impression, but it’s unavoidable when each bud has a weird, bulbous design that gives them an appearance like a pair of obese AirPods. The shiny black plastic material looks cheap, as does the printed Razer logo on the outside, which (despite all the Razer Chroma branding on the box) is just a decal that doesn't illuminate.

They’re thankfully not uncomfortable to wear, but even in your ears they’re nowhere near as stylish as similarly priced competitors like the SteelSeries Arctis GameBuds.

With much flatter sound, they’re significantly less versatile (especially if you’re after a pair of gaming earbuds that you can also use to listen to music) and offer fewer features than that model to boot, with inferior active noise cancellation (ANC) that fails to block out most background noise when you’re out and about.

(Image credit: Future)

The Razer buds’ biggest benefit is the use of the latest Bluetooth 6.0 standard, which allows for ultra-low-latency connectivity with compatible devices and is ideal if you’re a serious mobile gamer looking for something to use with the latest phones. The included 2.4GHz Razer HyperSpeed Wireless dongle is also impressively compact and offers similar low-latency performance on PC, PlayStation 5, and handhelds like the Nintendo Switch 2.

This alone might be worth the compromises elsewhere if you’re a really serious mobile gamer, though there are a few more things worthy of praise. The included case is well-designed and feels pretty high quality, with an attractive RGB strip that is illuminated to denote pairing or charging status. I also really like how you don’t have to take the dongle if you want to use it: simply plug the case into your machine, and you’re ready to go, which makes it basically impossible to leave behind.

Find the Razer Hammerhead V3 HyperSpeed gaming earbuds at the right price - and they could be a good pick.

Razer Hammerhead V3 HyperSpeed review: price & availability
  • Costs $129.99 / £129.99 / AU$229.95
  • Available via Razer right now
  • Availability at other retailers seems spotty

The Razer Hammer V3 HyperSpeed gaming earbuds cost $129.99 / £129.99 / AU$229.95 if you buy them directly from Razer, which is where I would recommend getting them, as stock at other retailers seems spotty.

If you do choose to buy from the likes of Amazon, be mindful not to accidentally purchase the cheaper Razer Hammerhead V3 X or older Razer Hammerhead True Wireless X model, as they look very similar.

At this price, the earbuds are going head to head with the likes of the SteelSeries Arctis GameBuds, which originally launched at $159.99 / £159.99 / AU$359 but are now regularly discounted to around $130 / £100 in the US and UK.

Even factoring in the added $30 / £30 at full price, I think the Arctis GameBuds are much better value. They offer a much more stylish design, versatile sound that you can easily customize with hundreds of selectable EQ profiles, in addition to slightly better overall battery life.

Razer Hammerhead V3 HyperSpeed review: specs

Razer Hammerhead True Wireless X

Price

$129.99 / £129.99 / AU$229.95

Weight

0.19oz / 5.6g (each bud); 2.22oz / 63g (case)

Compatibility

PC, PS5, mobile, Nintendo Switch, Nintendo Switch 2

Connection type

2.4GHz HyperSpeed Wireless / Bluetooth 6.0

Battery life

~40 hours

Features

THX Spatial Audio license included

Software

Razer Audio (mobile) / Razer Synapse (PC)

Razer Hammerhead V3 HyperSpeed review: design and features
  • Look bulky and dated
  • THX Spatial Audio support
  • Case is good

You should know by now that I’m not a big fan of how these earbuds look. They have a basic stemmed in-ear design with quite a bulbous body constructed from shiny black plastic and a cheap-looking green Razer decal on the back. They honestly look like something you’d buy on Amazon for under 50 bucks rather than a product from a premium gaming brand.

The case is much better, at least. It’s large, but still easily pocketable, and has a pleasant matte texture to its exterior and a very robust hinge with satisfyingly strong magnets. There’s a subtle strip of LED lighting on it as well, which lights up in an attractive rainbow pattern when the case is opened. It also illuminates different colors to denote charging or pairing status, battery level, and so on, which makes it surprisingly practical as well.

Inside the case, there’s plenty of space for the two earbuds and a little slot for the compact HyperSpeed Wireless dongle. When in the case, the dongle is nestled inside a Type-C port with passthrough connectivity. This means you can plug the entire case directly into your PC or console in order to pair the buds, which is pretty handy and helps keep everything in one place.

Aside from this, the Razer Hammerhead V3 HyperSpeed gaming earbuds don’t have a particularly expansive feature set compared to the offerings of other brands. The earbuds support ANC and a transparency mode, in addition to automatic pausing when removed from your ears. The compatible software offers three default EQ profiles (for gaming, music, and movies, respectively) plus the ability to create your own.

On PC, the buds come with a license key for THX Spatial Audio, which simulates 360-degree sound decently well and is a solid bonus.

(Image credit: Future)Razer Hammerhead V3 HyperSpeed review: performance
  • Sound is okay
  • ANC is poor
  • Decent battery life

Although it is impressively low-latency and thus suited for competitive gaming, I found the sound of the Razer Hammerhead V3 HyperSpeed to be so-so compared to similarly priced alternatives. In the default gaming preset, the bass is plenty punchy, but they lack clarity and sounds quite muffled in the high end. It’s good enough for the likes of PUBG: Battlegrounds or Counter-Strike 2, but would be an incredibly poor fit for more story-driven titles.

The music-listening experience is bad, and no amount of EQ tweaking could remedy the uninspiring sound. I would recommend swerving the default music EQ as well, as it’s absolutely rancid and tanks not only the bass but also the low mids, leading to sound that’s not dissimilar to that produced by the free earbuds you get on an airplane.

Alternating between the Razer Hammerhead V3 HyperSpeed and the SteelSeries Arctis GameBuds, there is simply no contest: the SteelSeries pair sounds better no matter what you throw at it, and the fact that it can handle music too means that you don’t need to buy a second pair to use with your phone.

The ANC also underperforms compared to alternatives, be they the GameBuds or others such as the Sony Inzone Buds. It fails to block out much background sound and even struggles to drown out the consistent, low noise from a desk fan. If you want to take these on a plane, just forget about it.

The microphones are okay, but not particularly reliable. With any kind of background noise, they can begin to struggle to pick up your voice - which had me relying on my desktop mic instead. Touch controls are quite awkward as well. They feel unresponsive and struggle to pick up inputs, leading to frequent accidental pauses or skips if you’re trying to use them for your tunes.

The battery life is at least one area where the Razer Hammerhead V3 HyperSpeed doesn't disappoint. I easily managed 7-8 hours per charge with the buds, and the case holds enough to fully top them up about four times when you're on the go.

(Image credit: Future)Should I buy the Razer Hammerhead V3 HyperSpeed?Buy it if…

You’re after low latency at all costs
These are some of the few gaming earbuds with Bluetooth 6.0 support, which might be a compelling reason to buy if that’s what you’re after.

Don’t buy it if…

You crave premium sound
The Razer Hammerhead V3 HyperSpeed gaming earbuds deliver unexceptional sound for the price. You can easily find alternatives that sound better for the same money.

You want more features
The Razer Hammerhead V3 HyperSpeed gaming earbuds also have fewer features than the competition, particularly the likes of the SteelSeries Arctis GameBuds with its many software options.View Deal

Razer Hammerhead V3 HyperSpeed review: also consider

Here are two more compelling options to weigh up.

Razer Hammerhead V3 HyperSpeed

SteelSeries Arctis GameBuds

PlayStation Pulse Explore earbuds

Price

$129.99 / £129.99 / AU$229.95

$159.99 / £159.99 / AU$359

$199.99 / £199.99 / AU$329

Weight

0.19oz / 5.6g (each bud); 2.22oz / 63g (case)

0.19oz / 5.3g (each bud); 1.7oz / 48.7g (case)

0.2oz / 6.5g (one earbud with medium tip)

Compatibility

PC, PS5, mobile, Nintendo Switch, Nintendo Switch 2

Xbox, PlayStation, Nintendo Switch, PC

PS5, PlayStation Portal, PC, mobile

Connection type

2.4GHz HyperSpeed Wireless / Bluetooth 6.0

2.4Ghz (via USB-C), Bluetooth 5.3 (mobile)

PlayStation Link wireless, Bluetooth (mobile)

Battery life

~40 hours

Up to 40 hours (buds 10 hours; case 30 hours)

5 hours with 10 hours from the charging case

Features

THX Spatial Audio license included

360° Spatial Audio, Qi Wireless Charging Case, 6mm neodymium drivers, four-mic ANC, transparency mode, in-ear detection/sensor, IP55 rating, fast charge, companion app with more than 100 presets

Planar Magnetic Drivers, AI-enhanced noise rejection, Dual Device connectivity, 3 sets of ear tips

Software

Razer Audio (mobile) / Razer Synapse (PC)

Arctis Companion App (mobile), SteelSeries Sonar (PC)

N/A

SteelSeries Arctis GameBuds
The SteelSeries Arctis GameBuds are the wireless gaming earbuds to beat right now. They offer great sound out of the box, plus hundreds of customizable EQ presets that make them perfect no matter what you are playing.

For more information, check out our full SteelSeries Arctis GameBuds review

PlayStation Pulse Explore earbuds
If you’re shopping for earbuds to use with a PS5, then the official PlayStation Pulse Explore earbuds are a decent pick. They sound far better than the Hammerhead V3 HyperSpeed pair thanks to their planar magnetic drivers.

For more information, check out our full PlayStation Pulse Explore earbuds review

How I tested the Razer Hammerhead V3 HyperSpeed
  • Tested for multiple weeks
  • Used with PC and mobile
  • Compared to other gaming earbuds

I tested the Razer Hammerhead V3 HyperSpeed gaming earbuds for multiple weeks across both PC and mobile, playing a range of different games.

This included plenty of Call of Duty: Black Ops 7, PUBG: Battlegrounds, Battlefield 6, Forza Horizon 6, Grand Theft Auto 5, and more, in addition to mobile titles like Neverness to Everness, and Call of Duty Mobile.

Throughout my time with the buds, I compared the experience to my hands-on testing of other gaming earbuds, including the SteelSeries Arctis GameBuds and other products featured on our best gaming earbuds guide.

Read more about how we test

First reviewed July 2026

Categories: Reviews

I tested the Eufy Omni S2 robotic vacuum — and it's expensive and impressive in equal measure

Sun, 07/19/2026 - 07:00
Eufy Omni S2: two-minute review

Eufy’s latest flagship robotic vacuum and mop, the Omni S2 is a hugely impressive appliance that combines excellent mopping with brilliant vacuuming to create one of the best home cleaning systems you can buy. It also self-cleans so thoroughly that, after several weeks of daily use, the dust bin, rollers and mop still looked like new.

The Omni S2 uses warm water to clean its spinning mop as it goes, while also scraping away dirt and using cyclone technology to whisk dust more efficiently into the onboard bin, instead of leaving it to clog up the filters. Water is ozonated in the base station to further improve cleaning performance, and there’s an integrated detergent system too.

The robot itself can even be fitted with a fragrance diffuser, which makes your room smell nice after every clean; three different scents are included in the box and, along with the detergent, and can be replenished from Eufy’s website.

(Image credit: Future)

It navigates well, mostly avoiding contact with walls and doors while driving very closely to all manner of obstacles without pushing them around, driving over them or ingesting them. The S2 is good at climbing over raised carpets, rugs and door thresholds — something the Omni S1 struggled with – and the app does a great job of quickly mapping your home, with a simple editing system for labeling every room correctly, and even adding virtual furniture.

I was impressed by how quiet the Omni S2 is, even with its powerful Cyclone mode engaged, and how the base station doesn’t sound like an Airbus when emptying the robot. It’s a very expensive product, but one that looks good and performs extremely well.

Eufy Omni S2: price and availability
  • List price: $1,599 / £1,599 / AU$2,299
  • Launched: March 2026

Just two years on from the launch of the Omni S1 Pro, Eufy now has the Omni S2. This is now the company’s flagship robotic vacuum and mop, with a price, performance and feature set to match.

It carries a recommended retail price of $1,599 / £1,599 / AU$2,299, making it £300 more expensive than the S1 pro, which remains on sale. That’s an awful lot of money for a vacuum cleaner — especially when

Eufy’s own range of robovacs starts under the £150 mark, and one of my favourites — the X10 Pro Omni vacuum and mop — is a comparative snip at £599.

What does the extra £1,000 get you with the S2? More power, of course, with greater suction thanks to Eufy’s new AeroTurbo 2.0 tech, improved intelligence, greater threshold clearance, a more powerful mop, better computer vision, a self-cleaning mop, electrolysed water, integrated detergent and even a built-in fragrance system with three included scents to pick from.

An additional cost to bear in mind is Eufy’s replacement parts kit. The brushes, bags, mops and rollers of all vacuum cleaners need replacing, so ongoing costs aren’t unusual, but Eufy likes to charge plenty. A complete kit for the S2 is £79.99. Premium parts for a premium robovac, I suppose. More welcome is Eufy’s new two-year warranty, which applies to all robot vacuums launched in 2026 and doubles the previous coverage.

  • Value score: 3.5/5
Eufy Omni S2: specifications

Specification

Detail

Max suction

30,000 Pa

Robot diameter

350 mm

Robot height

3.4 in / 85 mm

Dock dimensions

15.0 x 17.7 x 26.4 in / 380 x 450 x 670 mm

Dust bin volume (base)

2.5 litres

Water tank volume (base)

3L (clean) 2L (dirty)

Base type

Charge, auto-empty, hot water mop wash, hot air mop dry, clean water refill, self-clean

Max threshold clearance

Up to 1.7 in / 42mm

Mop type

Self-cleaner roller

Mop pad lifting

1.10 in / 28 mm

Max runtime

180 minutes

Eufy Omni S2: design
  • Docking station with charger, dust bag, water tanks and mop drying
  • Rotating, self-cleaning mop
  • Integrated detergent and fragrance supply

The S2 has a similar but more refined look than its S1 predecessor. The subtle bronze tint to sections of the robot and docking station give it a premium aesthetic that blends nicely with the futuristic lighting in both the clean water tank of the dock, and the robot’s onboard dust bin.

Taller than many docking stations, but significantly more elegant than most, the Omni S2’s appearance helps to justify its lofty price tag — and that’s further aided by the display and touch controls on top of the dock. These are handily located to press without stooping down to the robot itself, while the screen is useful for checking on the robot’s status and spotting error messages.

FutureFutureFutureFuture

Short of making you a cup of tea while the robot cleans up, the S2’s docking station does absolutely everything. It charges the robot, empties its dust bin, replenishes its water supply (and even ozonates fresh water before it’s fed to the mop), cleans the mop with water heated to 70 degrees centigrade, dries it with hot air, refills the detergent tank, and has enough dust bin capacity for up to a claimed 68 days between bag replacements.

The robot itself is almost circular, with a central roller that’s claimed to be 100 percent tangle free, a pair of spinning side brushes, and a roller mop that self-cleans, slides outwards by 1.5cm to reach into corners and even an onboard fragrance supply to make your home smell nice. The S2 includes three different fragrances in the box, but these are a bespoke design so replacements can only be bought from Eufy itself. The same goes for the detergent bottle too, while thankfully the 2.5-litre dust bags are generic.

FutureFutureFutureFuture

I like how the Omni S2 looks. Its design is more sophisticated than that of the S1, and I can imagine it neatly complementing the lavish houses of its deep-pocketed buyers. And while tall, at 670mm (26.4 inches), the docking station is relatively slim.

The robot is also relatively short, at 85mm. This compares favorably against taller, bulkier robovacs like the Dyson Spot+Scrub AI, which towers over the Eufy at 110mm and is less capable of cleaning beneath low furniture.

A welcome design upgrade for the Eufy Omni S2 is its ability to now clear door thresholds up to 4.2cm tall, up from just 2cm for the Omni S1. I was often left frustrated by that robot’s inability to drive up from exposed floorboards to a carpeted neighboring room, but have had no such issues with the S2.

  • Design score: 5/5
Eufy Omni S2: performance
  • Impressive vacuuming
  • Excellent mopping
  • Strong improvement over the S1

From the setup process and mapping, to vacuuming, mopping, navigation and self-cleaning, the Omni S2 is a triumph. You might say it should well be for the massive price tag, but even in 2026 it’s rare for such a complex new product to impress so universally. Where the Eufy Omni S1 struggled in some key areas — navigation, threshold clearance and sometimes even vacuuming — the S2’s performance is close to perfect.

Yes, it’s an ultra-premium product with a price to match. This is right up there with your Leica camera, Rimowa suitcase and five-figure turntable. I imagine the typical Omni S2 owner is the sort of person who wouldn't blink at splashing out on a pair of Apple AirPods Max 2 at the airport because they forgot their first-gens at home. They’d probably deal with a flight delay by picking up a new Swiss watch, too.

(Image credit: Future)

And that’s absolutely fine. Whatever the product, there’s always something that happens to sell the most expensive one, and for robotic vacuums that just so happens to be Eufy with the Omni S2. That doesn’t inherently count against it, because there are always customers happy to pay a premium for the one they like, or not really care about the cost because the S2’s spec sheet, design and feature set already put it at the top of the market.

What matters is how it performs in the real world, and how that compares to user expectations. Naturally, mine were at an all-time high and the S2 mostly delivered. The vacuuming performance is noticeably better than with the S1, and after a month of testing I still smile at the neat stripes vacuumed into my lounge carpet — and at how pleasant the S2’s fragrance system makes every room smell.

(Image credit: Future)

Eufy has improved navigation since the S1, and now the S2 is smart enough to not vacuum over the tasselled ends of a rug. It also automatically detects rug and carpet thickness, then raises itself by up to 50mm (1.97 inches) to prevent getting stuck in deep-pile fabric. In my testing, the S2 flagged a potentially tricky bit of carpet — which was actually an integrated but deeply contoured door mat — so I could tell it to ignore the concern or permanently avoid it.

Navigation and map creation is generally good. The robot only once got stuck and called for help, and I was impressed by how quickly the S2 mapped the ground floor of my home and did a decent job of detecting room boundaries. I used the app to fine-tune these, and was pleased to see how the S2 had added 3D cupboards, sofas, tables, chairs and other bits of furniture to the map. This isn’t strictly necessary, but it’s nice to see how the S2 correctly understands its environment.

(Image credit: Future)

Eufy claims a maximum suction of 30,000Pa, which is a huge upgrade over the 8,000Pa of the Omni S1 and other Eufy robots like the X10. There are four suction modes — Quiet, Standard, Turbo and Max — three options of cleaning intensity, three water levels, and the option of performing each cleaning task once or twice. As with the S1, the S2 returns to base whenever it needs to empty its bin, clean the mop, replenish its water supply or charge the battery. A mode called AI Automation promises to adjust cleaning strategy based on room type, floor material and cleaning frequency.

The Omni S2 deeply impressed during the first few weeks of general use, keeping hard floors and carpets clean — even after a cockapoo puppy joined our household, and his insistence on helping with garden projects brought a lot of dirt into the house. It was a joy, quite frankly, to have the S2 on hand, ready to clean up after every chaotic evening of dog zoomies.

(Image credit: Future)

I also loved how the S2 kept itself clean. Not only is the mop cleaned and dried with every use, but the cyclone-style dust collection ensures the onboard bin is practically spotless after each empty, and the filters don’t get clogged up. The rollers also looked like new after many hours of use, thanks to an anti-tangle design that actually works.

The mopping system works as well as the S1’s — evidenced by the absolutely filthy water collected in the waste tank of the docking station. I’d recommend owners empty this frequently, because if you wait a couple of weeks or so until it’s full, pouring it away is a seriously stinky process.

(Image credit: Future)

During TechRadar’s standardized robovac tests the Omni S2 continued to perform very well. These tests include two rounds of vacuuming on both carpets and hard floors, plus an obstacle avoidance test and a mopping test.

Pleasingly, the Omni S2’s vacuum performance is better than its predecessor, the two-year-old Omni S1. Vacuuming up oats from carpet was particularly impressive, with not a single piece being missed (except where I set the target zone in slightly the wrong place).

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294155314-yqci7jgyv *, #fv-chart-1784294155314-yqci7jgyv *:before, #fv-chart-1784294155314-yqci7jgyv *:after, #fv-chart-1784294155314-yqci7jgyv-slideshow *, #fv-chart-1784294155314-yqci7jgyv-slideshow *:before, #fv-chart-1784294155314-yqci7jgyv-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294155314-yqci7jgyv, #fv-chart-1784294155314-yqci7jgyv-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294155314-yqci7jgyv {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294155314-yqci7jgyv .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294155314-yqci7jgyv-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294155314-yqci7jgyv .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294155314-yqci7jgyv .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294155314-yqci7jgyv .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294155314-yqci7jgyv .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294155314-yqci7jgyv .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294155314-yqci7jgyv.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-expand-btn, #fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-expand-btn:hover, #fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294155314-yqci7jgyv .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294155314-yqci7jgyv .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row, #fv-chart-1784294155314-yqci7jgyv .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294155314-yqci7jgyv.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294155314-yqci7jgyv .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294155314-yqci7jgyv .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294155314-yqci7jgyv .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294155314-yqci7jgyv .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-pie-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-bar-product,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-grouped-product-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-cluster,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-label-space,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-benchmark-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-dropdown-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-chart-title,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-chart-subhead,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-header,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-vs,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select-container,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-versus-select,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294155314-yqci7jgyv.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294155314-yqci7jgyv .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row,#fv-chart-1784294155314-yqci7jgyv .fv-stacked-product,#fv-chart-1784294155314-yqci7jgyv .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-label,#fv-chart-1784294155314-yqci7jgyv .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-container,#fv-chart-1784294155314-yqci7jgyv .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294155314-yqci7jgyv .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294155314-yqci7jgyv .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-logo,#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294155314-yqci7jgyv .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294155314-yqci7jgyv .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294155314-yqci7jgyv .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294155314-yqci7jgyv.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:15:55.315Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}Before vacuumingAfter vacuumingwindow.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-1784294155314-yqci7jgyv', false); });} else {initialize('fv-chart-1784294155314-yqci7jgyv', false);}})();

During these tests I found the quickest, least powerful mode, called Quiet, was indeed very quiet (just 55 decibels on carpet), but the S2 performs best when suction is upped to the Standard or Turbo modes, cleaning intensity is increased from Fast to Standard, and the S2 is asked to perform two passes of the target zone or room, instead of one.

A crumb mix made of flour and crushed biscuit was completely lifted from a wooden kitchen floor using the S2’s standard intensity and suction settings, while on carpet I found Turbo or Cyclone (the most powerful suction mode) was best.

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294463899-v6ki3xaut *, #fv-chart-1784294463899-v6ki3xaut *:before, #fv-chart-1784294463899-v6ki3xaut *:after, #fv-chart-1784294463899-v6ki3xaut-slideshow *, #fv-chart-1784294463899-v6ki3xaut-slideshow *:before, #fv-chart-1784294463899-v6ki3xaut-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294463899-v6ki3xaut, #fv-chart-1784294463899-v6ki3xaut-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294463899-v6ki3xaut {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294463899-v6ki3xaut .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294463899-v6ki3xaut-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294463899-v6ki3xaut .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294463899-v6ki3xaut .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294463899-v6ki3xaut .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294463899-v6ki3xaut .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294463899-v6ki3xaut .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294463899-v6ki3xaut.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-expand-btn, #fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-expand-btn:hover, #fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294463899-v6ki3xaut .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294463899-v6ki3xaut .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row, #fv-chart-1784294463899-v6ki3xaut .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294463899-v6ki3xaut.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294463899-v6ki3xaut .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294463899-v6ki3xaut .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294463899-v6ki3xaut .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294463899-v6ki3xaut .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-pie-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-bar-product,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-grouped-product-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-cluster,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-label-space,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-benchmark-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-dropdown-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-chart-title,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-chart-subhead,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-header,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-vs,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select-container,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-versus-select,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294463899-v6ki3xaut.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294463899-v6ki3xaut .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row,#fv-chart-1784294463899-v6ki3xaut .fv-stacked-product,#fv-chart-1784294463899-v6ki3xaut .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-label,#fv-chart-1784294463899-v6ki3xaut .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-container,#fv-chart-1784294463899-v6ki3xaut .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294463899-v6ki3xaut .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294463899-v6ki3xaut .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-logo,#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294463899-v6ki3xaut .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294463899-v6ki3xaut .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294463899-v6ki3xaut .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294463899-v6ki3xaut.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:21:03.899Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}Crumb mix before first passCrumb mix after first passwindow.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-1784294463899-v6ki3xaut', false); });} else {initialize('fv-chart-1784294463899-v6ki3xaut', false);}})();

With that enabled, plus the intensity increased to Deep and the number of passes upped to two, the robot did a superb job.

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294519188-pba2ojlaz *, #fv-chart-1784294519188-pba2ojlaz *:before, #fv-chart-1784294519188-pba2ojlaz *:after, #fv-chart-1784294519188-pba2ojlaz-slideshow *, #fv-chart-1784294519188-pba2ojlaz-slideshow *:before, #fv-chart-1784294519188-pba2ojlaz-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294519188-pba2ojlaz, #fv-chart-1784294519188-pba2ojlaz-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294519188-pba2ojlaz {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294519188-pba2ojlaz .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294519188-pba2ojlaz-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294519188-pba2ojlaz .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294519188-pba2ojlaz .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294519188-pba2ojlaz .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294519188-pba2ojlaz .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294519188-pba2ojlaz .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294519188-pba2ojlaz.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-expand-btn, #fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-expand-btn:hover, #fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294519188-pba2ojlaz .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294519188-pba2ojlaz .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row, #fv-chart-1784294519188-pba2ojlaz .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294519188-pba2ojlaz.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294519188-pba2ojlaz .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294519188-pba2ojlaz .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294519188-pba2ojlaz .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294519188-pba2ojlaz .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-pie-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-bar-product,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-grouped-product-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-cluster,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-label-space,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-benchmark-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-dropdown-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-chart-title,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-chart-subhead,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-header,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-vs,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select-container,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-versus-select,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294519188-pba2ojlaz.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294519188-pba2ojlaz .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row,#fv-chart-1784294519188-pba2ojlaz .fv-stacked-product,#fv-chart-1784294519188-pba2ojlaz .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-label,#fv-chart-1784294519188-pba2ojlaz .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-container,#fv-chart-1784294519188-pba2ojlaz .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294519188-pba2ojlaz .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294519188-pba2ojlaz .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-logo,#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294519188-pba2ojlaz .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294519188-pba2ojlaz .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294519188-pba2ojlaz .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294519188-pba2ojlaz.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:21:59.188Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}Crumb mix after first passCrumb mix after second passwindow.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-1784294519188-pba2ojlaz', false); });} else {initialize('fv-chart-1784294519188-pba2ojlaz', false);}})();

The oat test is usually tougher, because robovacs tend to flick larger debris across hard floors with their spinning side brushes. The Omni S2 fell foul of this too, but as ever my advice is to set the robot to vacuum the entire room twice, instead of aiming for a target and kicking it everywhere.

With the right settings applied, the S2 picked up every single piece – and passed the same test with flying colors on carpet too, where flicking debris is less of an issue.

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784294576158-jknu8qhxr *, #fv-chart-1784294576158-jknu8qhxr *:before, #fv-chart-1784294576158-jknu8qhxr *:after, #fv-chart-1784294576158-jknu8qhxr-slideshow *, #fv-chart-1784294576158-jknu8qhxr-slideshow *:before, #fv-chart-1784294576158-jknu8qhxr-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784294576158-jknu8qhxr, #fv-chart-1784294576158-jknu8qhxr-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784294576158-jknu8qhxr {position: relative !important; overflow: visible !important;--riv-primary: #AA1124;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294576158-jknu8qhxr .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #AA1124;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784294576158-jknu8qhxr-slideshow .fv-slideshow-select:focus {outline: 2px solid #AA1124 !important;border-color: #AA1124 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784294576158-jknu8qhxr .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784294576158-jknu8qhxr .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784294576158-jknu8qhxr .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784294576158-jknu8qhxr .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784294576158-jknu8qhxr .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784294576158-jknu8qhxr.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-expand-btn, #fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-expand-btn:hover, #fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784294576158-jknu8qhxr .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784294576158-jknu8qhxr .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row, #fv-chart-1784294576158-jknu8qhxr .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784294576158-jknu8qhxr.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784294576158-jknu8qhxr .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784294576158-jknu8qhxr .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784294576158-jknu8qhxr .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784294576158-jknu8qhxr .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-pie-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-bar-product,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-grouped-product-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-cluster,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-label-space,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-x-axis-chart-space,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-benchmark-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-dropdown-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-carousel-nav-btn,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-chart-title,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-chart-subhead,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-header,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-vs,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select-container,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-versus-select,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294576158-jknu8qhxr.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784294576158-jknu8qhxr .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row,#fv-chart-1784294576158-jknu8qhxr .fv-stacked-product,#fv-chart-1784294576158-jknu8qhxr .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-label,#fv-chart-1784294576158-jknu8qhxr .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-container,#fv-chart-1784294576158-jknu8qhxr .fv-bar-cluster {width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784294576158-jknu8qhxr .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-label-space {display: none !important;}#fv-chart-1784294576158-jknu8qhxr .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-logo,#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784294576158-jknu8qhxr .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784294576158-jknu8qhxr .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784294576158-jknu8qhxr .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784294576158-jknu8qhxr.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "Default"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:22:56.158Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","Default"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}Before vacuumingAfter vacuumingwindow.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-1784294576158-jknu8qhxr', false); });} else {initialize('fv-chart-1784294576158-jknu8qhxr', false);}})();

I tested the mopping system with a dried smear of ketchup, which was promptly removed from the wooden floor. The cylindrical mop spins and pivots outwards to reach into the edges of the room, while the robot scrapes it clean and washes it while driving. The mop is then dried with hot air at the base station, which takes several hours but is very quiet.

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1784293750108-vrhlpw5yh *, #fv-chart-1784293750108-vrhlpw5yh *:before, #fv-chart-1784293750108-vrhlpw5yh *:after, #fv-chart-1784293750108-vrhlpw5yh-slideshow *, #fv-chart-1784293750108-vrhlpw5yh-slideshow *:before, #fv-chart-1784293750108-vrhlpw5yh-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784293750108-vrhlpw5yh, #fv-chart-1784293750108-vrhlpw5yh-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784293750108-vrhlpw5yh {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1784293750108-vrhlpw5yh-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1784293750108-vrhlpw5yh .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1784293750108-vrhlpw5yh .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784293750108-vrhlpw5yh .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1784293750108-vrhlpw5yh .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1784293750108-vrhlpw5yh.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper { position: relative !important; width: 100% !important; overflow: hidden !important; border-radius: 0 !important; background-color: #000 !important; touch-action: pan-y !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-inner { position: relative !important; width: 100% !important; height: 100% !important; display: block !important; transform-origin: center center !important; transition: transform 0.1s ease-out !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-bg { display: block !important; width: 100% !important; height: auto !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-fg { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%) !important; pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; -webkit-user-drag: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-slider { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 32px !important; transform: translateX(-50%) !important; cursor: ew-resize !important; z-index: 10 !important; user-select: none !important; -webkit-user-select: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-slider-line { position: absolute !important; top: 0 !important; bottom: 0 !important; left: 50% !important; width: 4px !important; background-color: white !important; transform: translateX(-50%) !important; box-shadow: 0 0 10px rgba(0,0,0,0.5) !important; pointer-events: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-handle { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32px !important; height: 32px !important; background-color: white !important; border-radius: 50% !important; box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 4px !important; pointer-events: none !important; z-index: 11 !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-arrow-left { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-right: 4px solid #4b5563 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-arrow-right { width: 0 !important; height: 0 !important; border-top: 4px solid transparent !important; border-bottom: 4px solid transparent !important; border-left: 4px solid #4b5563 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label { position: absolute !important; top: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; padding: 0.25rem 0.75rem !important; border-radius: 0.25rem !important; font-size: 0.875rem !important; font-weight: 500 !important; pointer-events: none !important; backdrop-filter: blur(4px) !important; z-index: 5 !important; transition: right 0.3s ease, opacity 0.2s ease !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-expand-btn, #fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn { position: absolute !important; bottom: 1rem !important; right: 1rem !important; background-color: rgba(0, 0, 0, 0.5) !important; color: white !important; border: none !important; border-radius: 0.25rem !important; padding: 0.5rem !important; cursor: pointer !important; z-index: 20 !important; display: flex !important; align-items: center !important; justify-content: center !important; backdrop-filter: blur(4px) !important; transition: background-color 0.2s !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-expand-btn:hover, #fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; z-index: 999999 !important; display: flex !important; align-items: center !important; justify-content: center !important; background-color: rgba(0, 0, 0, 0.9) !important; margin: 0 !important; touch-action: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; cursor: grab !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-bg { position: absolute !important; top: 0 !important; left: 0 !important; max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-fg { max-width: 100% !important; max-height: 100% !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row, #fv-chart-1784293750108-vrhlpw5yh .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784293750108-vrhlpw5yh.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784293750108-vrhlpw5yh .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1784293750108-vrhlpw5yh .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-pie-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-bar-product,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-grouped-product-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-cluster,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-label-space,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-x-axis-chart-space,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-benchmark-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-dropdown-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-carousel-nav-btn,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-chart-title,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-chart-subhead,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-header,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-vs,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select-container,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-versus-select,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784293750108-vrhlpw5yh.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1784293750108-vrhlpw5yh .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row,#fv-chart-1784293750108-vrhlpw5yh .fv-stacked-product,#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-label,#fv-chart-1784293750108-vrhlpw5yh .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-container,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-cluster {width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784293750108-vrhlpw5yh .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-label-space {display: none !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-logo,#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784293750108-vrhlpw5yh .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784293750108-vrhlpw5yh.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Overall Chart Title","description": "Subhead to describe the test and what's being measured and why","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-17T13:09:10.108Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Image Comparison","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": []}Before moppingAfter moppingwindow.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-1784293750108-vrhlpw5yh', false); });} else {initialize('fv-chart-1784293750108-vrhlpw5yh', false);}})();

Meanwhile, the S2’s obstacle avoidance saw it drive neatly around a shoe, a sock and a USB cable strewn across the floor. I was impressed by how close it got to each, with moving or ingesting anything.

Overall, the Eufy Omni S2 performed brilliantly. I would recommend using Standard intensity and Standard suction with two passes most of the time, then up the suction to Turbo or Cyclone for a deeper clean. The latter hitting just 70 decibels was also impressive — for context, my Dyson V10 stick vacuum is 90 dB at medium power.

FutureFutureFuture

I only encountered one serious problem with the S2, and unfortunately it led to a replacement unit being provided by Eufy. The first S2 performed perfectly for a month, but developed a fault where the robot and docking station lost their connection. Several reboots and lots of advice from customer services failed to find a solution, so a second S2 was delivered and the original went back to Eufy for an inspection.

Naturally, this is disappointing for such an expensive product. But I was impressed by Eufy’s customer service department — which I approached as a customer and not a journalist — and how quickly the problem was resolved. The second unit performed perfectly throughout the rest of my test.

  • Performance score: 4.5/5
Eufy Omni S2: app
  • Easy to use
  • Lots of configurability
  • Also handles Eufy security products
  • Option to charge at night — great if you have an EV tariff

The Eufy app gets better with every revision, and today it’s one of the best robovac apps I’ve ever used. Everything is logically laid out, with just the right amount of adjustability on offer to keep both newcomers and power users happy. The app is quick, responsive and presents everything in a way that’s easy to understand.

I especially like how it adds virtual furniture to your floor maps, which makes it easier to understand the layout and visualize where the robot is. Editing floor plans also works well, with simple tools for splitting, combining and renaming rooms after the robot has created an initial (but not always accurate) map of your home. Multiple floormaps can also be created, making it easy to save a second map for your bedrooms upstairs, for example.

FutureFuture

Another feature I like is how pre-defined tasks can be created. I have one called “After dinner”, which tells the S2 to vacuum and mop my kitchen a certain way. A single tap of this from the Eufy app home screen, and the robot gets to work.

Since getting a puppy I’ve come to value Eufy’s child lock function, which disables the buttons on top of the robot – handy for both inquisitive children and dogs alike. I also like the off-peak charging function, where you can configure the S2 to only charge its battery at certain times of day. Since I have an electric car and an EV tariff, I’ve set the robovac to only charge at night, when my electricity is much cheaper.

  • App score: 4.5/5
Should you buy the Eufy Omni S2?Eufy Omni S2 score card

Attribute

Notes

Score

Value

The Eufy Omni S2 really is very expensive indeed. It isn’t the most expensive robovac of all time, but it’s right up there. And while its lofty price makes alternatives look like excellent value, the S2 doesn’t necessarily feel like a rip-off. It’s a high-quality appliance that performs brilliantly and looks good too.

3.5/5

Design

Eufy knocked it out of the park with the S2’s design. It’s aesthetically pleasing, has a smaller footprint than some rivals, and the robot slips beneath most furniture. It also drives over raised rugs and thresholds better than before and keeps itself incredibly clean. All I wish is for a way to prevent the waste water tank from getting quite so pungent — frequent empties are a must!

5/5

Performance

The Omni S2 is much better at vacuuming than the S1 was, while being just as good at mopping and navigation. All of these attributes are now top-notch, while the onboard fragrance system is a lovely extra touch and the improved ability to clamber over raised thresholds is very welcome

4.5/5

App

Eufy’s app is great. Its robovac section is simpler to navigate than the slightly cluttered security section, with an excellent mapping system, handy shortcuts for frequently used cleaning chores, and some little features that are massively useful — like off-peak charging and the child/pet lock.

5/5

Buy it if

You want the best, regardless of price

Yes, it’s very expensive. But if you want the best this might well be it. Everything about the Omni S2 contributes to a premium ownership experience, from the app and the hardware, to the fragrance, cleaning performance and self-cleaning.

Mopping and vacuuming are equally important

Many robovacs are better at one task than the other — Eufy’s own Omni S1 mopped far better than it vacuumed — but with the S2 excellent mopping is paired with powerful vacuuming.

Self-cleaning is a must

The S2’s self-cleaning abilities are the best I’ve seen. Even after weeks of use in a busy home with a puppy, the robot’s dust bin, brushes, rollers and mop are like new. My only advice is to empty the waste water tank frequently, since older dirty water really does stink when poured away.

Don't buy it if

You're on a budget

There are a lot of very good robovacs that cost significantly less than the Omni S2. They don’t perform quite as well, but if you value vacuuming oliver mopping, for example, your money could be better spent (and saved!) elsewhere. If you have a lot of stairs, consider spending the same on a robovac and a conventional stick vacuum instead of splurging it all on the S2.

You don't want ongoing costs

This is a factor for all robovacs, since they mostly use dust bags and their brushes and rollers eventually need replacing. But the S2’s running costs are greater than most because Eufy sells its own mopping detergent in a specially-shaped bottle, and you’ll have to buy fragrance refills from Eufy too. Eufy’s official replacement parts kit is £80, three fragrance refills are £25 and the detergent is £20.

How I tested the Eufy Omni S2

I lived with the Eufy Omni S2 for several weeks before writing this review. During that time it was used exclusively to vacuum the carpets and mop the floors of my house. I tested its cleaning abilities, tried some of the included fragrance diffusers, and noted how its self-cleaning systems fared after many hours of use.

I then carried out a number of specific tests to understand how well it cleans different types of debris from carpet and hard floors, how effective its mopping system is, how good it is at avoiding obstacles, and how loud it is.

First reviewed July 2026

Categories: Reviews

The TCL NXTPAPER 70 Pro proved to me that budget smartphones can still be great — but I won't be ditching my aging Samsung just yet

Sun, 07/19/2026 - 05:00
Two-minute review

The TCL NXTPAPER 70 Pro is an affordable smartphone at $379.99 / £269 for the 256GB device. The US market also gets a cheaper 128GB model.

Its design is sleek and attractive, giving the air of a phone that costs a far more. The biggest selling point is the NXTPAPER 70 Pro's large 6.9in screen with epaper-like NXTPAPER 4.0 display technology.

The tech gives the screen a matte finish that minimises reflections and glare, and makes the TCL NXTPAPER 70 Pro extremely comfortable to read and work on. It features a variety of options for reducing eye-strain, and you can turn on various display modes with just a quick flick of a switch. These include Color Paper mode, which is perfect for reading digital comics, and Ink Paper mode, a black-and-white paper-like setting that’s great for ebooks and text-heavy websites.

(Image credit: Future)

As an avid reader of both books and comics, I was a huge fan of the TCL NXTPAPER 70 Pro's screen — but there are a few compromises which meant it wasn't a device I'd be happy to switch to full-time. Performance is fine, but multitasking with lots of different apps open at once isn’t as smooth as it is on devices with more RAM (the TCL NXTPAPER 70 Pro comes with 8GB, although that can be expanded later). In addition, taking photos at the main camera's maximum 50MP resolution introduces a slight pause as the phone processes your images.

Speaking of the camera, it does a decent job of taking high-resolution shots by default, but the digital zoom quickly displays its limits when you try zooming in too much. For day-to-day shots, though, it's fine; but anyone wanting to be more ambitious with their photography should look elsewhere.

(Image credit: Future)

TCL has made quite a big deal of the TCL NXTPAPER 70 Pro's AI features, and while it’s good to see the tech included in a budget device, I didn’t have much cause to use features such as live transcription, or AI-assisted note-taking. However, I can imagine they'll be useful for some, especially for accessibility — and on a positive note, they're not obnoxiously pushed onto you like they can be by other brands.

Overall, the TCL NXTPAPER 70 Pro is a stylish and dependable budget smartphone that offers plenty for the price, but its performance compromises can niggle. Nevertheless, its NXTPAPER 4.0 screen really is a standout feature, so for voracious readers, it could be their dream phone.

Meanwhile, I’m looking forward to seeing NXTPAPER 4.0 come to more powerful phones from TCL.

TCL NXTPAPER 70 Pro review: Price & release date
  • Starts at $379.99 / £269 for 256GB model
  • US also gets cheaper 128GB model
  • Available in Europe, North America, butnot officially in Australia

It might be because I’ve become used to the ever-increasing price of flagship phones from the likes of Apple and Samsung, but when I was told the price of the TCL NXTPAPER 70 Pro, I was genuinely impressed. For a smartphone with the word "Pro" in its name, a price of less than $400 is pleasing.

In the US and UK, the TCL NXTPAPER 70 Pro model with 256GB storage costs $379.99 / £269, which is a fair bit less than our current best cheap phone pick – the Samsung Galaxy A56 at $499 / £499. It actually undercuts pretty much all of the phones in that list, including the Poco X8 Pro Max, which starts at $469 / £469.

While a rock-bottom price isn’t the only measure of a good budget, in these financially uncertain times it’s certainly a major selling poin. If the TCL NXTPAPER 70 Pro can also match this with stellar performance, we could see a new budget champion.

In the UK, you can pick up the TCL NXTPAPER 70 Pro with a protective slipcase and stylus from Amazon for £369.98.

And for US customers, there's an even cheaper 128GB option that sells for $329.99. People in other markets might be disappointed to learn this isn't an option in their territory, but personally, I wouldn’t recommend opting for less than 256GB storage these days, especially if you take a lot of photos. Having said that, the TCL NXTPAPER 70 Pro supports microSD cards, so you can expand the storage up to 2TB.

Currently, if you’re in the US and buy the TCL NXTPAPER 70 Pro from TCL’s official store, you also get a free pair of TCL CrystalClip earbuds worth $95.99, making this already great-value handset even better value for money.

Storage

US Price

UK Price

256GB

$379.99

£269

512GB

$429.99

£319

  • Value score: 4.5/5
TCL NXTPAPER 70 Pro review: Specs

Dimensions:

169.4 x 80.05 x 7.98mm

Weight:

208g

Internal screen

6.9-inch NXTPAPER 4.0 display

Resolution:

1080 x 2340

Refresh rate:

120Hz

Peak brightness:

900 nits

CPU:

MediaTek Dimensity 7300

RAM:

8GB

Storage:

128GB / 256GB / 512GB

OS:

Android 16

Main cameras:

50MP 1.0UM OIS+8MP main

Selfie camera:

32MP

Battery:

5,200mAh

Charging:

33W

Colors:

Stellar Blue, Nebula Gold

(Image credit: Future)TCL NXTPAPER 70 Pro review: Design
  • Stylish and minimalist
  • Extra switch for changing display mode
  • Screen is a highlight

Design-wise, the TCL NXTPAPER 70 Pro certainly doesn’t feel budget. Available in two colors, Stellar Blue (the model I was sent) and Nebula Gold, the large 6.9-inch screen, thin bezels and modern design give the TCL NXTPAPER 70 Pro the appearance of a much more expensive phone at first glance.

The thin bezels keep the focus where it belongs: on the display. That's no bad thing, thanks to TCL's innovative NXTPAPER 4.0 technology, which gives the screen a matte, e-reader-like finish (more on that shortly). They also help prevent the TCL NXTPAPER 70 Pro from feeling even larger than it is — but make no mistake, this is a big phone, and it will stick out of plenty of pockets.

On the bottom of the TCL NXTPAPER 70 Pro is a USB-C port for charging, as well as a slot for your SIM card and SD card for expanding storage. On the right-hand side of the phone are the standard volume rocker, a power button with built-in fingerprint reader, and a unique NXTPAPER key. The latter is actually a physical switch, similar to the one found on older iPhones, to put the device into "Do not disturb" mode. Here, though, the NXTPAPER key switches been display modes: Color Paper mode, Ink Paper mode and Max Ink mode.

(Image credit: Future)

You can choose the mode each time, or set a default mode to turn on instantly when you flick the switch. A ripple transition effect plays as the screen switches to the mode you’ve chosen – I quite like it, but if you switch mode regularly, I can see how the animation might get a bit annoying.

I’ll go into each mode in a moment, but the default setting’s matte effect and vibrant colors makes the TCL NXTPAPER 70 Pro stand out from rivals, especially those that sell for a similar price — and the default wallpaper, which is a painting of flowers, looks fantastic.

(Image credit: Future)

Overall, the TCL NXTPAPER 70 Pro's design — aside from its standout display — isn't revolutionary, but it doesn’t need to be. It's a well-built, attractive phone that looks and feels more premium than its affordable price suggests.

  • Design score: 4.5/5
TCL NXTPAPER 70 Pro review: Performance and Display
  • Display is great for reading on
  • Can also play videos and games
  • Overall performance is solid, if unremarkable

The TCL NXTPAPER 70 Pro’s design does a decent job of making you forget that this is a budget phone, then — but the specs don’t do such a good job. Don’t get me wrong: it works fine, but when you're coming from a flagship handset — even one that’s now a few years old — it's a bit of a wake-up call to keep your expectations in check.

Android 16 runs smoothly, and even when using the various screen modes, the phone is responsive, with no annoying full-screen refreshes of the type that happen with some ebook readers. The display's matte finish keeps images looking crisp, even at extreme viewing angles, with vibrant colors and no distracting reflections.

Turning the screen to Color Paper mode mutes the colors and drops the background wallpaper. It makes the TCL NXTPAPER 70 Pro more comfortable to use in low-light conditions, and preserves battery life, too.

(Image credit: Future)

It works particularly well when reading comics (I tried it with Marvel Unlimited), as well as browsing the internet at night. The muted colors, paper-like display and lack of blue light mean a quick doomscroll before bed won't disrupt your sleep too much (although it doesn’t do anything for my general anxiety about the state of the world).

Impressively, the screen remains responsive, although rapidly scrolling through long passages of text causes the text to shift in colour slightly as it moves. You can watch videos, too, but you’ll want to switch back to normal mode for the best picture quality.

There’s also Ink Paper mode, which reduces colors to just black and white, removes the background wallpaper, and simplifies icons. This more basic mode is great for reading ebooks and websites; the interface is clean, easy to read, and free from distractions. It helps prolong battery life as well, yet still feels responsive.

Finally, there’s Max Ink mode, which limits the apps that can be run, futher extending battery life (with just 21% of battery life, the TCL NXTPAPER 70 Pro claimed to have around 46 hours left).

(Image credit: Future)

The screen really is a treat, and if you don’t mind the impact on image quality, switching between modes is a great way to boost the battery life if you’re away from a power supply. I found reading websites particularly comfortable in Ink Paper mode — although for image- and video-heavy websites, you’ll probably want to switch to a color mode.

Color Paper mode is also excellent for reading digital comics. As an X-Men fan, I found the TCL NXTPAPER 70 Pro’s large paper-like display ideal for reading on Marvel Unlimited and Kindle. The matte finish dramatically reduces glare, and. unlike some early color e-readers I’ve tested, both apps remain as fast and responsive as they do on other smartphones.

So, Color Paper mode is great for those who wish to get through their large digital comic libraries while on long trips. Personally, I prefer reading the comics in the default display mode, as colors are more vibrant.

The TCL NXTPAPER 70 Pro overall performance is solid, and about what you’d expect for the price. I didn’t have any issues using any of my regular daily driver apps, and the games I tested ran perfectly fine as well — although, if you’re looking for a smartphone on which to mainly play games, you might want to look for a device with a standard display and more graphical power.

Powering the TCL NXTPAPER 70 Pro is a MediaTek Dimensity 7300, an octa-core processor with four performance and four efficiency cores. It can't match Qualcomm’s latest Snapdragon chips, but at this price it's hard to fault, delivering smooth everyday performance. The 8GB of RAM comfortably handles multitasking, although it doesn't feel quite as snappy as more expensive handsets with more memory. TCL does let you allocate up to 16GB of virtual RAM from the phone's storage, increasing the total to a very healthy 24GB, and proving a little more headroom for the future.

(Image credit: Future)

The phone features two SIM card slots, and supports eSIM, and network speeds up to 5G. However, the TCL NXTPAPER 70 Pro only supports Wi-Fi 5, which is now quite outdated. It meant I couldn't take full advantage of my home router’s Wi-Fi 7 connectivity, and this led to a noticeable reduction in speed when using Wi-Fi.

To be fair to the TCL NXTPAPER 70 Pro, this was the only time its budget roots really showed.

The screen is definitely a standout feature for anyone who spends a lot of time reading on their phone. However, if you spend more time watching movies or playing games, a device with a more traditional display will be a better choice.

  • Performance score: 3.5/5
TCL NXTPAPER 70 Pro review: Camera
  • 50MP main camera
  • 32MP selfie camera
  • Good detail at high resolutions
FutureFutureFutureFutureFutureFutureFutureFutureFutureFutureFutureFutureFutureFuture

The TCL NXTPAPER 70 Pro features a 50MP rear camera with OIS (Optical Image Stabilization) and a 32MP front-facing camera. It also uses TCL’s own MuseFilm imaging technology, which the manufacturer says combines hardware and software enhancements to deliver more visually impressive photos.

I didn’t really notice much difference when comparing photos taken on similar phones. Having said that, images taken with the 50MP camera are bright, vibrant and full of detail.

While zooming in reveals some loss of sharpness, photos look impressive at full resolution, with even busy scenes retaining plenty of detail. If you’ve previously dismissed budget smartphones because of their lack of photo-taking prowess, then the TCL NXTPAPER 70 Pro proves that affordable handsets can deliver.

However, note that taking photos at the full 50MP resolution (which at the default 4:3 aspect ratio leads to image resolutions of 8192 × 6144) does put pressure on the TCL NXTPAPER 70 Pro’s hardware: there's a slight pause between pressing the shutter button and image capture (a message pops up asking you to hold the phone still while the image is being processed). It’s another reminder about the TCL NXTPAPER 70 Pro’s budget price, and while it didn’t appear to make any of the photos I took with moving subjects blurry, if you want to take a series of fast images, you’ll need to lower the resolution — or buy a more powerful phone.

Reducing the resolution speeds up the whole process, and when images are viewed on the phone’s screen they still look sharp. Viewing them on a larger screen, or printing them out, makes the reduced resolution more noticeable, though.

FutureFuture

When shooting below the full 50MP resolution, the TCL offers up to 2x optical zoom and 10x digital zoom. However, pushing the digital zoom too far reveals the limitations of the hardware, with considerable loss in detail and the addition of image artefacts.

You can also switch to the ultra-wide lens, which produces some nice results, although it does occasionally introduce distortion around the edges. There’s also a macro setting for taking close-up shots, and while the results are fine, they lack detail.

(Image credit: Future)

For best results, then, you’ll want to stick to the standard settings without zooming in.

(Image credit: Future)

The front-facing camera captures good-quality selfies with plenty of detail, and there are plenty of settings to experiment with, including the often questionable "beauty" modes found on many smartphones.

Overall, photography isn't the TCL NXTPAPER 70 Pro's main strength, so it isn't for you if camera performance is a priority. However, for day-to-day snaps, it does the job.

  • Camera score: 3/5
TCL NXTPAPER 70 Pro review: Battery life
  • 5200mAh capacity
  • 33W fast charging
  • Over 10 hours of continuous video playback

The TCL NXTPAPER 70 Pro doesn’t have the largest battery, nor does it charge as quickly as other budget rivals, with its fast charging capped at 33W (the Xiaomi Redmi Note 15 Pro 5G can charge at 45W). Still, it powered up to 56% (from empty) after just 30 minutes.

During tests, the TCL NXTPAPER 70 Pro lasted well over a day of standard use with a single charge, and in our benchmark tests, it hit 10 hours and 55 minutes of continuous video playback. Turning on the Max Ink mode boosted battery life in the same tests by around 50 minutes.

Considering the limitations of Max Ink mode, I was expecting a bigger difference in battery life, but that could be a testament to how efficient the default screen mode is at prolonging battery life.

As with other phones around this price point, there’s no wireless charging support, which was a blow coming from a handset that has the ability to charge over wireless. If you’re not bothered about the tech, this won’t be an issue, but for people like myself who have wireless charging accessories (including in my car), it does limit the appeal of the TCL NXTPAPER 70 Pro.

  • Battery life: 3.5/5
Should I buy the TCL NXTPAPER 70 Pro?TCL NXTPAPER 70 Pro Scorecard

Attribute

Notes

Score

Value

Starting at $379.99 / £269 for 256GB model, this is a great-value smartphone — although compromises have been made to keep the price low.

4.5/5

Design

A smart, minimalist design makes the TCL NXTPAPER 70 Pro look more expensive than it is. The matte display is easily the highlight.

4.5/5

Performance

The TCL NXTPAPER 70 Pro offers solid performance for its price, but keep your expectations in check — this is a budget phone, after all. Reading on the TCL NXTPAPER 70 Pro’s unique screen is an absolute joy, however.

3.5/5

Battery life

The TCL NXTPAPER 70 Pro's battery life is good, and with careful use you could get two days of use on a single charge. The slower charge speed and lack of wireless charging is disappointing, however; but considering the price, it's understandable.

3.5/5

Buy it if…

You read a lot on your phone
The TCL NXTPAPER 70 Pro's screen is ideal for reading, with its paper-like display making it comfortable to read everything from ebooks and digital comics, to websites and apps.View Deal

You don’t want to spend a lot of money
Starting at just $379.99 / £269 for the 256GB model, the TCL NXTPAPER 70 Pro is a great alternative for people who don’t want to shell out the high prices for flagship smartphones.View Deal

You only take the odd photo
The 50MP camera offers a decent amount of detail and vibrancy for day-to-day snaps, but if photography is a passion, then you won’t be that impressed by the TCL NXTPAPER 70 Pro's camera performance .View Deal

Don’t buy it if…

You want a phone for mainly watching films and playing games on
The TCL NXTPAPER 70 Pro paper-like screen is fine for watching films, TV shows and playing games, but for the best image quality you’ll want a more traditional smartphone.View Deal

Photography is important to you
The camera on the TCL NXTPAPER 70 Pro is fine for basic snaps, but will quickly show its limitations to those who are more ambitious with their photography.View Deal

You like the convenience of wireless charging
The TCL NXTPAPER 70 Pro doesn't support wireless charging, and it was very much missed during the testing period. If you have wireless chargers dotted around your home (and vehicle), then you’ll want to pay a bit more for a phone that can make use of them.View Deal

Also consider

Xiaomi Redmi Note 15 Pro 5G
This is another budget phone for around the same price, with a bright display and surprisingly impressive cameras. If you want a cheap phone for watching films, the more traditional (yet still bright and vibrant) screen of the Xiaomi Redmi Note 15 Pro 5G is better suited.

Read our full Xiaomi Redmi Note 15 Pro 5G reviewView Deal

Google Pixel 10a
Starting at $499 / £499 / AU$849, the Google Pixel 10a is slightly more expensive than the TCL NXTPAPER 70 Pro, but you get longer battery life and better photo quality, so if those are two important priorities for you, then it’s worth the extra investment. As a Pixel handset from Google, Android comes with very little extra bloat, which is another strong selling point.

Read our full Google Pixel 10a reviewView Deal

(Image credit: Future)How I tested the TCL NXTPAPER 70 Pro
  • Used it on and off for around a month
  • Used the various display modes to read ebooks and digital comics

Due to a busy few months, I’ve been using the TCL NXTPAPER 70 Pro on and off as my main phone during the time I’ve had it. This is longer than our usual testing process, and meant I got a good idea of overall performance of the handset.

I used the TCL NXTPAPER 70 Pro not just to make calls and browse the internet, but also loaded several ebooks to read using the handset’s variety of screen modes. I also read digital comics via the Android versions of the Marvel Unlimited and Kindle apps. I also took photos and watched videos.

Categories: Reviews

The Dimplex FlexBlade Multi-Directional Bladeless Fan looks like it's part of a plane, but despite its propeller-like design it may struggle to cool your aircraft hangar

Sun, 07/19/2026 - 02:00
Dimplex FlexBlade Multi-Directional Bladeless Fan: two minute review

Vertically aligning the fan vents makes the FlexBlade easy to store. (Image credit: Future)Specifications

Type: Tower

Speeds: 5

Oscillation: horizontal 30, 60, or 90 degrees

Vertical tilt: each blade can rotate 180 degrees

Dimensions (H x W x D): 32.6 x 27.9 x 14.6 inches / 82.8 x 70.8 x 37cm (blades horizontal), 43.1 x 12.6 x 14.6 inches / 109.5 x 32 x 37cm (blades vertical)

Controls: power, speed, timer, plus remote control

Noise level: 36dB to 58dB

The Dimplex FlexBlade isn't your traditional tower fan, although you can use it as one. It's bladeless, Dyson-style, so it delivers smooth airflow without the buffeting of a bladed fan.

The design is very flexible, enabling you to use it as a T-shaped floor fan, a vertical pedestal fan, or any angle in between. Air comes out of two wide vents, and those vents can be rotated 90 degrees in either direction so that you can have wider airflow or cool two areas simultaneously. That could be useful in shared spaces such as offices, although as the fan's stand isn't telescopic, one of you will get a cool back while the other gets cool legs.

The FlexBlade looks like it'll be extremely powerful but the strength of airflow drops off quickly with distance, so at full power with both blades pointing forward it felt like a breeze at three meters. It's fairly quiet, though, and delivers similar airflow and noise levels to our trusty Dyson Hot+Cool fan.

This isn't the most powerful floor fan we've tested by any means but it does move a decent amount of air and that flexible design makes it useful for multiple applications, such as the bedroom at night and home office or living room during the day.

The FlexBlade is very wide in horizontal mode but you can angle it through 90 degrees. (Image credit: Future)Dimplex FlexBlade fan review: price and availability
  • Launched June 2026
  • UK only
  • £199.99 (about $160 / AU$230)

With fortunate timing, the FlexBlade launched during a month of record-breaking heat in the UK. The Dimplex FlexBlade Multi-Directional Bladeless Fan launched in the UK in June 2026 with a recommended retail price of £199.99 (about $160 / AU$230). It isn't currently available in Australia, and Dimplex doesn't sell its home cooling products in the US.

I'm writing this as more really hot weather is toasting the UK, so I need to temper my usual buying advice with the fact that for many people the only criteria for a fan right now are 'will it cool me down?' and 'is it in stock?', to which the answers are yes and at the time of writing, yes. But I would point out that Dimplex dropped the price to just £123 for Amazon Prime Day 2026, so if you're not reading this in sweltering temperatures you can expect similar discounts in the cooler months when demand sags.

Value for money: 4/5

The two vent arms can be manually rotated independently to blow air in two directions (Image credit: Future)Dimplex FlexBlade fan review: design
  • Horizontal and vertical adjustment
  • Horizontal oscillation
  • Simple but effective controls

I can't talk about the design of the Dimplex FlexBlade without addressing the elephant in the room, or rather the Shark: the Shark TurboBlade cooling fan, which seems to have inspired Dimplex's designers. Both have a propeller-esque T-shaped design with two independent, rotatable bladeless vents. Both can pivot from horizontal to vertical mode. Both project air up to 20 meters. Both have a magnetic remote control. Both have a quiet sleep mode. And both have multiple speed settings: 10 for the Shark and five for the Dimplex. I think the Shark is a little nicer looking, more flexible thanks to its telescopic pole and less top-heavy — the Dimplex wobbles a bit when you touch it — but it's also £50 (about $70 / AU$100) more expensive when it's not in the sales.

The FlexBlade arrives in six parts: the main motor unit, a two-part riser with a heavy base, and the two vents. It's simple and quick to put together – the only tool required is the provided Allen key for securing the base — and the remote attaches magnetically to the top of the unit so it's always handy.

The FlexBlade can be angled horizontally, vertically or in between, and it oscillates up to 90 degrees. (Image credit: Future)

Controls are kept to a minimum on the fan itself: power/speed, oscillation and timer. The remote is simple too, with the addition of dedicated speed up/down buttons, a full speed button and a sleep mode button to put the fan into its lowest power state overnight.

The T-shaped, two-vent design delivers a lot of flexibility. You can't adjust the 1.1m height of the main motor unit but you can position the two blades vertically, horizontally or in between, and you can rotate them independently up to 180 degrees to push air in two opposite directions at once. The rotating blades are a little stiff but not awkwardly so. The blade adjustments are manual but the fan itself can oscillate automatically, delivering horizontal oscillation of 30, 60 or 90 degrees.

Design: 4/5

The on-board controls are simple: timer, power/speed and oscillation.FutureThe illuminated dots on the front show the current fan speed. There are five settings.FutureDimplex FlexBlade fan review: performance
  • Oscillation and adjustable vents
  • Quieter than similar rivals
  • Best experienced reasonably close

The Dimplex promises airflow in excess of 6m/s with a 20-meter range and 90-degree sweep, but at full power with both blades pointed directly at me from three meters away it felt like a very mild breeze. At that distance and with the blades arranged vertically the remote control was very hit and miss.

The FlexBlade comes with a straightforward remote control. (Image credit: Future)

The Dimplex is a bit quieter than the Shark – Dimplex's figures say it's 36dB at its lowest setting and 58dB at full pelt, compared to the Shark's 40dB to 66dB – but it still gets loud at higher fan speeds with the telltale whoosh we've come to expect from bladeless fans. It's not Dyson hand dryer loud at full power, though; it's more like a hair dryer on a very low setting.

I compared the Dimplex's airflow to two other room fans: a Dyson Pure Hot + Cool and a Meaco Sefte 10-inch air circulator. Both the Dimplex and the Dyson are bladeless and moved air a similar distance with similar noise levels, although the Dyson's wider diffusion mode made its output quieter at the expense of focused air. But the Meaco was quieter than both and delivered significantly stronger airflow across a large living room.

Performance: 3/5

The FlexBlade has a magnetic perch to keep the remote handy. (Image credit: Future)Dimplex FlexBlade fan review: should you buy it?

Value

Previous Prime Day pricing suggests that the list price is a little high.

3/5

Design

It looks very like a Shark, but it's well made and feels solid; controls are straightforward and the flexible airflow is clever.

4/5

Performance

Not as powerful as it looks, and venting in two directions reduces airflow in each direction.

3/5

Buy it if...

You like to share

Unlike traditional fans the FlexBlade can cool in two directions simultaneously with or without oscillation.

You like planes

The twin-blade design resembles a propellor or wings, and arranged vertically it looks like something from a space programme.

You need flexibility

It's easy to direct air exactly where you need it to go.View Deal

Don't buy it if...

You want all the airflow

Bi-directional venting inevitably mean splitting the output in two.

Your space is big

An air circulator is likely to do a better job cooling large rooms and similarly big spaces.

You like a bargain

The Dimplex FlexBlade was much cheaper during Prime Day 2026.

Dimplex FlexBlade fan review: also consider

Meaco Sefte 8in Portable Air Circulator

The Shark TurboBlade is the closest rival in terms of this kind of design. But if you don't need the bi-directional air of the Dimplex or Shark I'm an evangelist for Meaco's Sefte table and pedestal air circulators, of which I've bought three so far for my family. They're astonishingly quiet, very powerful and oscillate both vertically and horizontally to really move air around the room.

Unfortunately the big ones are sold out and apparently won't be back in stock until October 2026. However, there is an eight-inch rechargeable model with a list price of £79.99 (about $110 / AU$150) that's in stock at the time of writing. It pushes air up to 17 meters and runs as quietly as 27dB.View Deal

Dimplex FlexBlade fan review: how we tested

I tested the FlexBlade for a week at my home in Scotland during July 2026's UK heatwave. Scotland escaped the worst, because while England boiled the temperatures here were milder, peaking at 27ºC / 80.6ºF. That's hot enough to need a powerful fan but not so hot that I was crawling into my freezer or taking cold showers fully clothed.

I work from home in a long downstairs room that gets sunshine from both directions during the day, and that means it's often warmer inside than out – especially in the evening, as UK homes are typically made to retain heat rather than reflect it. I tested the FlexBlade as a daytime fan in my living room/office and as a bedroom fan overnight to see if it could keep me cool during the day, cool my family in the evening and help me sleep better at night.

First tested July 2026

Categories: Reviews

I breathed new life into my vinyl with Fluance's RT87 turntable and while setup was finicky, it's well worth it for seasoned record collectors

Sat, 07/18/2026 - 14:00
Fluance RT87 Turntable review: two minute review

Nothing highlights the highs and lows of vinyl like a proper turn table such as the Fluance RT87. Maybe you’ve been using the same Audio Technica LP-60 or even Crossley or Victrola that proliferates the storefront of every record store you’ve ever been to. No shame, I’ve had each at some point.

But there’s something about a fully manual turntable from assembling and calibrating (and testing one’s patience) to cleaning a record every time you put a new one on. Convenient is not necessarily a word that I would use for this process. But it is a bit meditative. More importantly, the audio quality you get a step above with that analog warmth that the best turntables are known for, while not adding unnecessary distortion that may make your vinyl also sound a bit unintentionally lo-fi.

Of course, spending the $799.99 / £666.33 / AU$1,231.70 is not enough for that immersive listening experience. You should probably get a pair of the best stereo speakers you can afford. And if those speakers don’t have a built-in phono preamp, you’ll have to get one of those too. This turntable does not come with one.

Fluance RT87 Turntable review: price and release date

The Fluance RT87 is playing Kacey Musgraves. (Image credit: Future / James Holland)
  • How much does it cost? $799.99 (around £666 / AU$1,230)
  • When is it available? Available now (launched in June 2026)
  • Where can you get it? Available now in the US; UK and Australia coming soon

Newest among Fluance’s offerings with a mid-June 2026 release, the Fluance RT87 is available in the US and will (at the time of writing) be available in the UK,and Australia very soon. And whether you get it in Natural Walnut, Piano Black, or Piano White, the price goes for an only-cheap-to-audiophile price of $799.99 (around £666 / AU$1,230). And that price stays the same regardless of cartridge, of which you can choose from the Ortofon 2M Blue or Audio Technica AT-VM95ML.

Just be aware that the Fluance RT87 does not have a built-in phono preamp, so you’ll need to invest in one. Fluance does sell the PA10 Phono Preamp for $99.99 / £82.99 / AU$154 and can be bundled (though without a discount) on its site.

Fluance RT87 Turntable review: features

The Fluance RT87 has a speed selector, so no need to change the belt. (Image credit: Future / James Holland)
  • Very light on features and extra perks — the connoisseurs' choice
  • No phono preamp or 45 RPM adapter
  • Does come with a bubble level

If the Fluance RT87 is more for the audio purist and I think that’s who the brand is targeting, then it makes sense that this turntable is pretty light on convenience-focused features. There is no built-in phono preamp — something you can find on much cheaper decks like the Audio-Technica AT-LP70XBT. And, of course, you won’t find Bluetooth connectivity or any other unique types of connectivity.

I don’t say this as a bad thing, either. After all, the Fluance RT87 is meant for someone ready to enter more serious vinyl listening and all those extra accoutrements take away from what’s important and that’s its performance and everything involved in making sure that it performs properly.

While I’ll cover most of those choices for performance in the next couple sections, it’s worth noting that the Fluance RT87 comes with the option of either the Ortofon 2M Blue or Audio Technica AT-VM95ML cartridge, either of which cost over $150 as just as part ($166.99 and $179.00, respectively). The configuration reviewed here is the Ortofon 2M Blue.

While there are plenty of opinions out there on both cartridges and how they affect the sound and I won’t parse out that whole conversation — people’s opinions of cartridges are as varied as they are on any other piece of audio equipment — other than to say that either cartridge marks an entry point into serious audio quality from more budget cartridges… just like the Fluance RT87 itself.

It’s also worth mentioning that this turntable can play 78, 45, and 33 RPM, via a selector on the lower left corner of the turntable so no need to adjust the belt like some turntables. Unfortunately, it doesn’t come with a 45 RPM adapter. Additionally, it has an Auto-Stop toggle on the back.

Features score: 3 / 5

Fluance RT87 Turntable review: sound quality

The Fluance RT87 being used in a somewhat treated room. (Image credit: Future / James Holland)
  • Has a sweet, slightly warm sound
  • Soundstage is immersive
  • No discernable inner groove distortion

I learned a lot about my records using the Fluance RT87 as my conduit. I learned that I didn’t like the way Fleetwood Mac’s Rumours is mixed. I learned that there’s way too much happening in Kamasi Washington’s Truth. Just to name a few.

You hear something that was there this whole time, but you noticed it on this last listen. And that’s not something that typically happens with entry-level gear. In short, I really enjoyed listening to the Fluance RT87. And while the turn table is a step or two up from entry-level gear (maybe beginner audiophile gear or first serious turntable level), the rest of the chain was more on the budget side — Fluance’s affordable PA10 phono amp and the company’s Ai41 speakers. Solid gear, but not transcendent.

One of the good things about using the Ai41 speakers is its Bluetooth connectivity. I could compare a record to a digital stream of the same music via HiFi through Deezer, which I did in a few cases. Rumours, for instance, got a play through vinyl as well as Kacey Musgrave’s Golden Hour. And the vinyl sounded just a little bit better. Maybe it’s the even-order harmonics. Maybe it’s using physical media over digital zeros and ones. To me, everything through the Fluance RT87 had this little bit of bloom to it. It just sounded a little bit sweeter.

Since I had done my best to properly set up my bookshelf speakers when I did my serious listening, I found the soundstage to be expansive and enveloping during listening sessions. I mentioned Kamasi Washington’s Truth, from his album Harmony of Difference before. When playing that song (really the whole record), not only could I hear his band to the outer reaches of where the speakers were projecting, but I could hear precise placement of various horn parts placed across the sound stage. In the same vein, Radiohead’s Pyramid Song sounded phenomenal on this setup.

As far as frequency response goes, I was pretty pleased. With the obvious caveat that the speakers are going to be the biggest bottleneck in a sound system (a bit of an oversimplification), I found the mid-range to be rich and full. Kacey Musgrave’s voice and guitar on Slow Burn, the opening track from Golden Hour, has weight to it. And the high-end has plenty of detail, while retaining some of the warmth of analog as it’s a tiny bit rolled off in a pleasing kind of way.

Now, the bass response is a bit tighter as opposed to big or woolly. It was still very present. Sure, it has a defined space on an older record like Rumours or Talking Heads’ Remain In The Light, but it’s easily placeable and doesn’t overpower the mix in something like FKA Twigs’ EP1.

Lastly, every record I played had a good amount of headroom so that the music came through clearly and without any real distortion (outside of those even order harmonics). And there wasn’t any discernable inner groove distortion either as the stylus would wind its way to the end of each side.

Sound quality: 5 / 5

Fluance RT87 Turntable review: design

Fluance RT87's acrylic platter is hefty, weighing about four pounds. (Image credit: Future / James Holland)
  • Heavy-duty plinth and platter
  • Belt-driven
  • Removable cartridge

If you’re just getting into turntables, you might be wondering what puts the Fluance RT87 in a more expensive price bracket compared to a lot of the popular, feature-filled turntables out there, one of which you might be upgrading from.

Obviously the sound quality is a huge part of that, which we’ve already covered, but that sound quality is affected by the build of the Fluance RT87. Of course, it’s worth mentioning that it’s a classy-looking deck with a high-gloss finish, available in Natural Walnut (reviewed here), Piano White, and Piano Black. It is made from MDF, but that’s actually a positive, as it doesn’t create any resonance.

Getting back to that build, the plinth, aka the body or chassis of the turntable, is heavy — the whole thing weighs 21 lb (9.5 kg) — giving the turntable a durable feel. Also, the acrylic platter is hefty in and of itself at 4.1 lb (1.85 kg). Incidental bumping or closing of the dust cover, which is surprisingly easy to scratch, doesn’t skip or affect the sound. And unless your record is warped, it will rotate without any up or down motion.

This is a belt-driven turntable with an adjustable and rigid carbon fiber tonearm (you even get a little hex wrench to adjust it), complete with removable counterweight and tiny anti-skate weight, and replaceable cartridge. I’ve mentioned earlier the two types of cartridges to select from and the fact that the reviewed model here came with the Ortofon 2M Blue. It’s worth noting that this is a moving magnet cartridge with a nude elliptical stylus.

The feet, of which there are three, are adjustable to help level the Fluance RT87. They are basically large, mostly silicon silicon screws.

Control-wise, there’s just the speed selector on the front, left corner of the plinth and the auto-stop toggle on the back. The ports are about as Spartan — just stereo RCA inputs and a ground outlet.

As far as extras go, the turntable comes with a RCA cable, ground cable, hex wrench for adjusting the tone arm, and bubble level, so you can adjust the turntable’s angle accordingly before you end up butchering any records. Brushes and any extras will require an individual purchase.

Design score: 4.5 / 5

Fluance RT87 Turntable review: ease of use and setup
  • Putting it together takes ten minutes
  • Not plug-and-play
  • Fine tuning takes even longer

There's a bit of assembly required with the Fluance RT87. (Image credit: Future / James Holland)

This should not be your first turntable. There’s ritual to setting up the Fluance RT87, as there is for a lot of turntables once you graduate beyond the three-to-four hundred dollar range. Because of that, it was equal parts frustrating and engaging. So, yes, there is some assembly required.

When first unboxing, I had to remove everything from its plastic wrapping and then spend probably five minutes just getting everything all together. I had to put the platter on the plinth, put the belt around the platter and then on the motor, put the Ortofon cartridge on one end of the tonearm followed by the counterweight on the other end, then on goes the anti-skate weight, and, lastly, I had to add the hinges to the dust cover and then attach it to the plinth.

But wait, we’re not ready to start playing any records. I had to turn the platter a few times with the belt on so that it’s evenly distributed. Since the platter doesn’t have a ridge or indentation for the belt, it has a habit of slipping off (and still does if I’m a bit clumsy removing a record after play) — something you don’t have to deal with on cheaper decks.

I also had to adjust the feet so that the turntable is completely level, making sure records lie flat during play. This takes a bit of time because you have to reach under and turn each foot clockwise to extend (counter-clockwise to shorten) until the bubble level shows its bubble directly in the center. This took me about ten minutes of adjusting initially, though to be fair, I was using a table that wasn’t very level. After moving the Fluance RT87 from the table I first had it set up on to a different, somewhat treated room where I had to put it on the floor, it required much less adjusting.

Adjusting the tonearm’s counterweight took quite a while as I had to be precise in getting it to balance flat instead of flying up and away from the turntable or digging into my records. While it’s par for the course, this probably also took me about ten minutes of adjusting, though that’s partially because I set it up according to the manual and found the tonearm to still not have enough weight from the counterweight.

Similarly, the anti-skate weight here is a bit finicky as well. It’s just a tiny ball on a thread thin enough to thread a needle with a loop on the other end to attach to the tonearm. The tonearm attachment is basically a lever with four notches on it to account for different anti-skate weight needs (for instance, the anti-skate should loop over a different rung when using the Ortofon cartridge versus the Audio-Technica one). Not only did it take some experimentation to find the right setting, but the loop kept slipping off its rung.

If you’re upgrading to your first big-boy or big-girl turntable and considering this one, just be ready to put in some time getting it right before actually using it. Also be aware that some of the required attention to detail during setup is not unique to this turntable, though anti-skate weights aren’t always a tiny ball on a tiny string.

Usability and setup score: 3.5 / 5

Fluance RT87 Turntable review: value

(Image credit: Future / James Holland)
  • Less features and automation than cheaper turntables
  • Better sound quality than those cheaper turntables
  • Some entry-to-premium decks may sound as good, but aren’t as sturdy

It’s interesting that the cheaper decks are the more convenient. It’s almost as if the more money you spend, the less features. Exhibit A, for instance, might be the FiiO TT13. This turntable costs a little over a quarter of the price of the Fluance RT87 ($249 / £239 / AU$249 if you need specifics), while adding in Bluetooth connectivity, a built-in phono amp, a fully automatic tonearm, and, frankly, due to its plug-n-play design requires none of the setup or fine tuning of the record player reviewed here. But I would hazard that the Fluance RT87 sounds quite a bit better since it has a bit more heft to its sound.

If you’ve been looking at upping your vinyl game, you might have already looked at the popular Rega Planar PL1, which at $595 / £299 / AU$645, is probably a more direct comparison. But, while the Rega also has a pretty spacious sound, it’s a bit more workmanlike in construction. It’s more utilitarian in looks and is much more light weight in construction. The Fluance RT87’s acrylic platter alone weighs about half of the Rega Planar PL1, making the Fluance more likely to absorb shocks and bumps without fuss.

Value score: 4 / 5

Should I buy the Fluance RT87 Turntable?

Attributes

Notes

Rating

Features

While it’s to be expected on more serious turntables, this one is very light on features, though at least one can change from 33 to 45 rpm without having to adjust the belt.

3/5

Sound quality

The Fluance RT87 sounds really good, able to reproduce that analog warmth with body and spaciousness.

5/5

Design

From the removable but capable Ortofon Blue 2M (or AT-VM95ML) cartridge to the heavy acrylic platter and more, this turn table was built for durability and for quality.

4.5/5

ease of use and setup

There’s a lot of fine tuning required to set the RT87 up properly. And it’s probably going to take a little while. This part may exercise your patience.

3.5/5

Value

The Fluance RT87 is not a cheap turntable, but as a turntable for those ready to get serious about their listening experience, it’s appropriately priced.

4/5

Average Rating

Excellent sound, heavy duty build — there’s a lot to love. Too bad it doesn’t have a built-in phono preamp.

4.5/5

Buy it if...

You want immersive, impressive audio
With a good pair of speakers in tow, the Fluance RT87 will make your record collection come alive with audio that has heft as well as breadth. It just sounds good.

You’re ready for a serious turntable
Yeah, you have to do a bunch of set up and it doesn’t have Bluetooth, but if you want a solid turntable for serious listening, the Fluance RT87 should be in consideration.

You’re worried about vibrations
There’s the rubberized, adjustable feet, a substantial plinth, and a hefty platter. This turntable won’t skip or scratch from a bump (if you have it set up correctly).

Don't buy it if...

You prioritize value
While I think the Fluance RT87 is worth its price tag, I’ll also admit that it’s pretty high. Most people wanting to get into vinyl or step up from their very first record player will probably not want to spend $800 on one.

You need a phono preamp
The Fluance RT87 does not have a phono preamp. If you’re not prepared to pay for this additional piece, then you might want to look elsewhere.View Deal

Fluance RT87 Turntable review:: Also consider

Fluance RT81
If you’re reading this review and liking what you see except for the price tag, Fluance does have the RT81, which costs less than half the price. It still sounds good, though not as good (less detail, inconsistent speed), and is much more convenient to use.
Read our full Fluance RT81 reviewView Deal

Rega Planar PL1
The Rega Planar PL1 is not nearly as heavy duty as the Fluance RT87. And it’s a bit more utilitarian looking. But it also sounds very good and is a couple hundred bucks cheaper.
Read our full Rega Planar PL1 reviewView Deal

How I tested the Fluance RT87 Turntable
  • Used regularly for a few weeks
  • Played through Fluance P10 Phono Preamp and Fluance Ai41
  • Played at various speeds and different size records

I used the Fluance RT87 for a few weeks, listening to as wide a variety of music from Rock to Jazz to Americana that I could. In so doing, I used the different speeds as well as seeing how it did with different size records. I also used the record player in a couple different rooms and with a couple different speakers, the Fluance Ai41 mentioned above and the Klipsch The Nines II.

I’ve tested a lot of tech gear over the years from laptops to keyboards and speakers, and so have been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.

Categories: Reviews

The Laifen T1 Pro is an electric shaver with an Apple-esque aesthetic that isn't backed up by its performance

Sat, 07/18/2026 - 12:00
Laifen T1 Pro: two-minute review

On first impressions, the Laifen T1 Pro wows. Open the box and you're greeted with Apple-inspired packaging, while the shaver itself immediately looks the part. Its CNC-machined unibody aluminium body looks and feels genuinely premium and, if you're used to cheaper shavers like the Philips OneBlade – my usual razor – it's impossible not to grin at the magnetically attached shaving head, which somehow manages to feel genuinely futuristic.

Modern conveniences like USB-C charging, an aeroplane mode to stop the power button being pressed in your bag while travelling and IPX7 waterproofing all add to the premium feel. Based on the spec sheet and those first impressions, you'd be forgiven for thinking the Laifen T1 Pro was one of the best electric shavers on the market.

The problem is that, with a shaver, the only thing that really matters is the shave itself, and that's where the Laifen T1 Po disappoints. I shave twice a week and have fairly coarse stubble, and despite repeated attempts the T1 Pro simply couldn't deliver a comfortable shave and often snagged on my hairs, which was painful and left me with patchy stubble. You have to limit your expectations a bit with single-blade razors, but I've been getting an effective shave with my Philips OneBlade for years, and often I found myself reaching for it to finish up and get the hairs that survived the T1 Pro's efforts.

This leaves the Laifen T1 Pro in an awkward position. It's beautifully designed and genuinely pleasant to use in every respect until it comes to shaving, but if I have to reach for a second razor to finish the job, the premium build and thoughtful features become little more than a nice distraction. I'd love to see Laifen revisit the shaving head in a future model because the engineering elsewhere is genuinely impressive, but as it stands I can't recommend the T1 Pro.

(Image credit: Future)Laifen T1 Pro: price and availability
  • List price: $149 / £149 / AU$246
  • Launched: September 2025

The Laifen T1 Pro launched in September 2025. Listing prices vary but are consistent with other premium shavers. In the US it's currently selling for around $129, in the UK it's £149 and in Australia it's $239. However, it doesn't come with a case, cleaning materials or anything else so it may feel steep in comparison

  • Value score: 2/5
Laifen T1 Pro: design
  • CNC-machined aluminum feels premium
  • Magnetic head feels futuristic and makes cleaning a breeze
  • USB-C means you're just taking one cable away with you

The Laifen T1 Pro makes an excellent first impression. Unlike the plastic-bodied shavers that dominate the market, the T1 Pro is built around a CNC-machined unibody aluminium chassis that immediately feels more like a premium gadget than a bathroom appliance. The fit and finish are excellent, while the magnetically-attached shaving head snaps satisfyingly into place and makes cleaning refreshingly simple.

Laifen has also packed in plenty of thoughtful features. USB-C charging means one less proprietary cable to keep track of, an airplane mode prevents the power button from being accidentally pressed in your luggage, and the IPX7 waterproof rating means you can use the shaver wet or dry before simply rinsing it under the tap to clean it up.

(Image credit: Future)

The compact dimensions work in the T1 Pro's favour. It's comfortable to hold despite the lack of any rubberized grip, and the aluminum body never felt slippery during my testing, even during a heatwave when I was, perhaps a little sweatier than I'd like to admit. Its low weight, just 3.3oz / 93g, makes it easy to use precise movements in the tricky areas like the jawline and around the mouth — areas that can be difficult with larger, clunkier, shavers.

It's a minor thing, but I found myself squeaking with joy each time I opened the little cap at the bottom of the razor to reveal the USB-C charging port. It's a small thing, but the cap fits so neatly in and comes away so delicately it sparks joy every time I charged it.

In many ways, the T1 Pro feels like the product of a company obsessed with industrial design. From the premium materials to the magnetic shaving head and clean, minimalist aesthetic, there's very little to criticize about the hardware itself.

  • Design score: 4/5
Laifen T1 Pro: performance
  • Foil snags on coarse hair, which is painful
  • The shave is patchy and inconsistent
  • Long-lasting battery means you'll only need to charge occasionally

Ultimately, the Laifen T1 Pro lives or dies by the quality of its shave, and that's where it struggles. I have fairly coarse facial hair and typically shave twice a week, which proved to be a challenge the T1 Pro never really overcame.

Rather than cutting cleanly through my stubble, the shaver frequently pulled at beard hairs, making each shave less comfortable than it should have been. It also struggled to achieve an even finish. Even after several passes, I was often left with patches of missed stubble that required further attention. The trimmer head was more prone to this snagging, but the shaver head didn't eliminate the problem and also left my skin irritated.

The T1 Pro's light weight makes it easier to use, but its small size means covering your face takes longer than with a larger foil shaver. As a result, multiple passes quickly became the norm, and each additional pass increased the likelihood of the shaver snagging on thicker patches of hair.

(Image credit: Future)

I repeatedly found myself reaching for another razor to finish the job. Not only did it clean up the areas the T1 Pro had missed, but it also did so more comfortably. That's difficult to overlook given the T1 Pro's premium price.

The 120-minute battery life is excellent and should last most people several weeks between charges.

Unfortunately, The Laifen T1 Pro looks and feels like a premium electric shaver, but in my experience it simply doesn't deliver the shave the design promises, which makes it impossible to travel with because I also have to toss a second razor into my bag.

  • Performance score: 1/5
Should you buy the Laifen T1 Pro?Laifen T1 Pro score card

Attribute

Notes

Score

Value

A disappointing shave that is often painful.

2/5

Design

Beautifully designed with some thoughtful choices.

4/5

Performance

A premium price backed up by the design but not the shave.

1/5

Buy it if

You want a premium looking shaver

The Apple comparisons hold up; it really is a great looking shaver that feels good in your hand

You hate carrying extra cables

Charging from a USB-C means you've almost definitely got one with you, wherever you are.

Don't buy it if

You want a good clean shave

I feel like I've gone on about this a lot, but honestly it's really annoying to have a shaver that's doesn't give you a clean shave.

You have delicate skin or coarse hair

The Laifen T1 Pro can be quite a harsh shave. I found it struggled with my coarse stubble, catching on it painfully and often not cutting cleanly through. The shaver attachment left my skin sore and irritated after each use.

Laifen T1 Pro: also consider

Philips OneBlade 360

If you have sensitive skin, you'll likely find this versatile shaver a better option. It doesn't offer the closest shave but it's gentle, suitable for wet and dry shaving, and affordably priced too.

Read our full Philips OneBlade 360 review

Braun Series 9 Pro

At the other end of the price scale, we have this premium model, which our reviewer called "the Bugatti Veyron of shavers". It delivers excellent performance, with an ergonomic design and good battery life, and has a price tag to match.

Read our full Braun Series 9 Pro review

First reviewed July 2026

Categories: Reviews

The Samsung S95H is one of the best OLED TVs I've ever tested, even if it does feature a controversial design

Fri, 07/17/2026 - 15:03
Samsung S95H review: Two minute review

Sitting at the top of Samsung’s 2026 TV lineup, the Samsung S95H is a flagship OLED TV that delivers excellent performance, particularly when it comes to picture, and a full set of features both for smart TV and for gaming. This could easily be one of 2026’s best TVs.

The S95H has a full list of features. Its NQ4 AI Gen 3 Processor comes with a stack of AI tools for picture, such as AI Motion Enhancer Pro and AI 4K Upscaling Pro, AI tools for sound such as Adaptive Sound Pro, and other AI tools for content recommendation. All of these fall under the Samsung Vision AI banner.

Picture quality on the S95H is superb. It delivers the highest brightness to date from a flagship OLED TV, along with vibrant, accurate colors, crisp textures and powerful contrast. Its anti-reflection screen is effective at eliminating reflections and while its Filmmaker Mode is a little dim in bright conditions, its Movie mode is a great brighter alternative.

Motion handling is mostly smooth and natural for both movies and sport, and while there are some hints of black crush in certain movies I tested, the S95H’s picture is still up there with the best OLED TVs.

The Samsung S95H delivers solid overall built-in sound. Its accuracy and precision are its strengths, with an excellent connection between the action on screen and the sound. The bass is punchy, there’s some nice impact and the soundstage can be wide. Still, this level of picture quality deserves a fuller sound, so I’d recommend one of the best soundbars or speakers.

Design is arguably the S95H’s most controversial topic this year. A new silver frame around the TV, called the FloatLayer Design, has been added and I personally found the frame to be distracting. While meant for wall-mounting, the extra width may cause space issues for some people and the handsome central pedestal stand of its predecessor has been replaced by two plastic feet. The One Connect Box has been removed, with ports returning to the TV itself — but you can connect Samsung Wireless One Connect Box to add more HDMI ports.

The S95H is a phenomenal gaming TV. Carrying four HDMI 2.1 ports that support 4K 165Hz, full VRR, HDR10+ gaming and ALLM, and boasting an ultra-low 9.5ms input lag at 60Hz, performance is smooth and the picture always looks great. Easily one of 2026’s best gaming TVs.

One UI Tizen is the S95H’s smart TV platform. It supports all major streaming apps, delivers pretty smooth performance and is easy to navigate. While there are some quirks that I found frustrating (namely auto-playing Samsung TV Plus), it’s still a good smart TV platform. Its Vision AI companion can be useful for those who enjoy AI, and while it doesn’t quite measure up to LG’s webOS, it’s still solid.

The 65-inch S95H I tested costs $3,399 / AU$5,299, putting it at the premium end of the TV market. While this is a high price, the S95H delivers features and performance to justify the price and it’s competitively priced with rivals, with the LG G6 65-inch costing $3,299 / AU$4,999. I expect prices for the S95H will drop shortly, with some deals already active in Australia at the time of writing.

Samsung S95H review: Prices & release dates

(Image credit: Future)
  • Release date: June 2026
  • 55-inch price: $2,299 / AU$3,999
  • 65-inch price: $3,299 / AU$5,299
  • 77-inch price: $4,299 / AU$7,999
  • 83-inch price: $6,299 / AU$9,999

The Samsung S95H is the flagship OLED in Samsung’s 2026 TV lineup. It sits above the mid-range Samsung S90H and budget Samsung S85H. The 65-inch model I tested launched in June 2026 at $3,299 / AU$5,299.

In the few weeks since its release, prices have remained the same, though we have seen some price reductions in Australia, particularly in larger-sized models, with up to AU$1,500 off the 83-inch model. The S95H’s launch prices are cheaper than both its predecessor, the S95F, and the rival G6. However, the G6 has been out for longer, so its prices have dropped over time.

Samsung S95H review: Specs

Screen type

QD-OLED

Refresh rate

Up to 165Hz

HDR support

HDR10+, HDR10, HLG

Audio support

Dolby Atmos

Smart TV

Tizen

HDMI ports

4 x HDMI 2.1

Built-in tuner

ATSC 1.0 (US)

Samsung S95H 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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper *, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper *:before, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper *:after, #fv-chart-1784039250164-av6v8vei1-slideshow *, #fv-chart-1784039250164-av6v8vei1-slideshow *:before, #fv-chart-1784039250164-av6v8vei1-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper, #fv-chart-1784039250164-av6v8vei1-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-row,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-stacked-product,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-label,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-container,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-cluster {width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-label-space {display: none !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-chart-title {padding: 0 8px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-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-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo,#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1784039250164-av6v8vei1-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1784039250164-av6v8vei1-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": "Taken using a colorimeter and test pattern generator. Click the test name to see more measurements and choose a test from the dropdown menu","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-07-14T14:27:30.165Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung S95H","LG G6","Samsung S95F","HDR Filmmaker Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Standard Mode (Fullscreen)","SDR Filmmaker Mode (Fullscreen)","SDR Standard Mode (Fullscreen)","HDR Filmmaker Mode","HDR Standard Mode","SDR Filmmaker Mode","SDR Standard Mode","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung S95H – HDR Filmmaker Mode (10% window)","value": 2739,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – HDR Filmmaker Mode (Fullscreen)","value": 449,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – HDR Filmmaker Mode (10% window)","value": 3004,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – HDR Filmmaker Mode (Fullscreen)","value": 451,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – HDR Filmmaker Mode (10% window)","value": 2132,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – HDR Filmmaker Mode (Fullscreen)","value": 390,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – HDR Standard Mode (10% window)","value": 2831,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – HDR Standard Mode (Fullscreen)","value": 463,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – HDR Standard Mode (10% window)","value": 2469,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – HDR Standard Mode (Fullscreen)","value": 385,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – HDR Standard Mode (10% window)","value": 2135,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – HDR Standard Mode (Fullscreen)","value": 380,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – SDR Filmmaker Mode (10% window)","value": 220,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – SDR Filmmaker Mode (Fullscreen)","value": 219,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – SDR Filmmaker Mode (10% window)","value": 559,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – SDR Filmmaker Mode (Fullscreen)","value": 390,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – SDR Filmmaker Mode (10% window)","value": 256,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – SDR Filmmaker Mode (Fullscreen)","value": 137,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – SDR Standard Mode (10% window)","value": 229,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95H – SDR Standard Mode (Fullscreen)","value": 229,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – SDR Standard Mode (10% window)","value": 648,"unitText": "nits"},{"@type": "PropertyValue","name": "LG G6 – SDR Standard Mode (Fullscreen)","value": 559,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – SDR Standard Mode (10% window)","value": 372,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung S95F – SDR Standard Mode (Fullscreen)","value": 199,"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-07-14T14:27:30.165Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung S95H","LG G6","Samsung S95F","UHDA-P3","BT.2020","HDR Filmmaker Mode","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung S95H – UHDA-P3","value": 99.97,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95H – BT.2020","value": 89.2,"unitText": ""},{"@type": "PropertyValue","name": "LG G6 – UHDA-P3","value": 99.3,"unitText": ""},{"@type": "PropertyValue","name": "LG G6 – BT.2020","value": 83,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95F – UHDA-P3","value": 100,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95F – BT.2020","value": 89.3,"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-07-14T14:27:30.165Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Samsung S95H","LG G6","Samsung S95F","General","SDR Delta-E","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung S95H – General","value": 1.6,"unitText": ""},{"@type": "PropertyValue","name": "LG G6 – General","value": 1.4,"unitText": ""},{"@type": "PropertyValue","name": "Samsung S95F – General","value": 2.61,"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-07-14T14:27:30.165Z","citation": "The Samsung S95F does not have a recorded 1080p 120Hz results as its measurements was taken before we started doing this test","keywords": ["Samsung S95H","LG G6","Samsung S95F","4K 60Hz","1080p 120Hz","HDR Filmmaker Mode","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Samsung S95H – 4K 60Hz","value": 9.5,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung S95H – 1080p 120Hz","value": 5,"unitText": "ms"},{"@type": "PropertyValue","name": "LG G6 – 4K 60Hz","value": 8.9,"unitText": "ms"},{"@type": "PropertyValue","name": "LG G6 – 1080p 120Hz","value": 4.6,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung S95F – 4K 60Hz","value": 9.5,"unitText": "ms"}]}]Previous1 / 4NextBrightness measurements

Taken using a colorimeter and test pattern generator. Click the test name to see more measurements and choose a test from the dropdown menu

HDR Filmmaker ModeHDR Standard ModeSDR Filmmaker ModeSDR Standard ModeSamsung S95HHDR Filmmaker Mode (10% window)2739HDR Filmmaker Mode (Fullscreen)449LG G6HDR Filmmaker Mode (10% window)3004HDR Filmmaker Mode (Fullscreen)451Samsung S95FHDR Filmmaker Mode (10% window)2132HDR Filmmaker Mode (Fullscreen)39001,0002,0003,0004,000nitsHDR Filmmaker Mode DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Samsung S95H2739449LG G63004451Samsung S95F2132390Samsung S95HHDR Standard Mode (10% window)2831HDR Standard Mode (Fullscreen)463LG G6HDR Standard Mode (10% window)2469HDR Standard Mode (Fullscreen)385Samsung S95FHDR Standard Mode (10% window)2135HDR Standard Mode (Fullscreen)38007501,5002,2503,000nitsHDR Standard Mode DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Samsung S95H2831463LG G62469385Samsung S95F2135380Samsung S95HSDR Filmmaker Mode (10% window)220SDR Filmmaker Mode (Fullscreen)219LG G6SDR Filmmaker Mode (10% window)559SDR Filmmaker Mode (Fullscreen)390Samsung S95FSDR Filmmaker Mode (10% window)256SDR Filmmaker Mode (Fullscreen)1370150300450600nitsSDR Filmmaker Mode DataProductSDR Filmmaker Mode (10% window) (nits)SDR Filmmaker Mode (Fullscreen) (nits)Samsung S95H220219LG G6559390Samsung S95F256137Samsung S95HSDR Standard Mode (10% window)229SDR Standard Mode (Fullscreen)229LG G6SDR Standard Mode (10% window)648SDR Standard Mode (Fullscreen)559Samsung S95FSDR Standard Mode (10% window)372SDR Standard Mode (Fullscreen)1990200400600800nitsSDR Standard Mode DataProductSDR Standard Mode (10% window) (nits)SDR Standard Mode (Fullscreen) (nits)Samsung S95H229229LG G6648559Samsung S95F372199HDR color gamut

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

Samsung S95HUHDA-P399.97BT.202089.2LG G6UHDA-P399.3BT.202083Samsung S95FUHDA-P3100BT.202089.30255075100HDR Filmmaker Mode DataProductUHDA-P3 ()BT.2020 ()Samsung S95H99.9789.2LG G699.383Samsung S95F10089.3Picture accuracy

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

SDR Delta-ESamsung S95H1.6LG G61.4Samsung S95F2.610123SDR Delta-E DataProductValueSamsung S95H1.6LG G61.4Samsung S95F2.61Input lag

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

Samsung S95H4K 60Hz9.51080p 120Hz5LG G64K 60Hz8.91080p 120Hz4.6Samsung S95F4K 60Hz9.51080p 120Hz0012345678910msHDR Filmmaker Mode DataProduct4K 60Hz (ms)1080p 120Hz (ms)Samsung S95H9.55LG G68.94.6Samsung S95F9.5N/AThe Samsung S95F does not have a recorded 1080p 120Hz results as its measurements was taken before we started doing this testwindow.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-1784039250164-av6v8vei1', true); });} else {initialize('fv-chart-1784039250164-av6v8vei1', true);}})();

The above EOTF graphs show the accuracy of the Samsung S95H 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 S95H 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 S95H review: Features

The ports of the S95H have returned to the rear panel of the TV, with the removal of the One Connect Box (Image credit: Future)
  • NQ4 AI Gen 3 processor
  • OLED Glare Free screen
  • AI enhancements including AI Football Pro mode

The flagship Samsung OLED has typically used a QD-OLED panel in its 55-77-inch sizes in the past. Based on my testing measurements, I am certain that the 65-inch model I tested does use a QD-OLED panel, though Samsung doesn't confirm this either way. The 83-inch model will use an LG W-OLED panel, because QD-OLED panels don't come in that size.

The S95H features an anti-reflection, matte screen, called OLED Glare Free by Samsung, that is designed to reduce mirror-like reflections, and keep reflections from a light to minimum.

The S95H uses Samsung’s own NQ4 AI Gen 3 processor, which provides visual AI-based enhancements such as AI Motion Enhancer Pro, 4K AI Upscaling Pro and Auto HDR Remastering Pro, as well as the introduction of AI Soccer Mode Pro, designed to provide the best picture and sound for Soccer. AI audio enhancements include AI Sound and AI Sound Controller Pro.

For HDR support, HDR10+, HDR10 and HLG are once again supported, but there is still no support for Dolby Vision. For enhanced audio formats, Dolby Atmos is supported, but not DTS.

The big design change with the S95H, compared to last year’s S95F, is the addition of a wider, silver frame, which Samsung calls a FloatLayer Design, which adds a couple of extra inches all around the TV. As a result, the One Connect Box is gone and ports have returned to the rear panel of the TV itself.

It’s worth noting that, as well as the four HDMI 2.1 ports on the rear panel, Samsung says that its Wireless One Connect Box can be added in addition to the other ports, giving you a total of eight HDMI 2.1 ports (four built-in, four on the optional box).

For sound, the S95H features a built-in 4.2.2-channel, 70W speaker system that supports Dolby Atmos: the same core specs as last year’s S95F. Sound features include Object Tracking Sound+ (OTS+), Adaptive Sound Pro and Active Voice Amplifier Pro.

Gaming is well covered, with four HDMI 2.1 ports built-in that support 4K at up to 165Hz, full variable refresh rate options including AMD FreeSync Premium Pro and Nvidia G-Sync, HGiG, HDR10+ gaming and auto low latency mode. There’s also a Game Hub where cloud-based applications such as Xbox and Luna can be accessed.

Samsung uses its own Tizen smart TV platform on the S95H, which features the aforementioned picture and audio AI tools as well as Generative Wallpaper and Art Mode, the latter of which is the same found on the brand’s The Frame art TVs.

Tizen supports a vast array of apps including Netflix and Prime Video and uses Samsung TV Plus for broadcast TV. It does however only have a built-in ATSC 1.0 tuner, rather than the latest ATSC 3.0.

  • Features score: 5 / 5
Samsung S95H review: Picture quality

The S95H's increase in brightness means daytime scenes have even more pop (Image credit: Future)
  • Spectacular color display
  • Effective anti-glare matte screen
  • Strong contrast and inky black tones

The S95H boasts some strong brightness results, clocking in at 2,739 nits in Filmmaker Mode and 2,831 nits in Standard for peak HDR brightness. I used Movie mode for some of my testing, and this registered at 2,751 nits peak HDR. This is a big jump over 2,132 nits and 2,135 nits the S95H’s predecessor, the S95F, registered in the same HDR Filmmaker and Standard modes respectively.

Even fullscreen HDR brightness has had a nice boost, registering 449 nits in Filmmaker, 460 nits in Standard and 450 nits in Movie. This is a jump over the 380 nits and 390 nits the S95F achieved in Filmmaker and Standard mode.

The S95H’s has an anti-reflection, matte screen. If you’re viewing in a bright room, with unavoidable light, the S95H should be near the top of your shopping list. While I preferred the LG G6 over the S95H for actual content in bright rooms, the S95H is still the better TV for eliminating reflections outright.

The S95H demonstrates effective upscaling of SDR sources. Watching a mix of reality shows and Wimbledon via Samsung TV Plus, the S95H did a good job sharpening textures and giving colors a richer look. With HD sources, detail upscaling looked realistic and definitely had a 4K-like level of detail.

I tried out the Auto HDR Remastering Pro tool, and while it did boost brightness and sharpen textures, it all looked too artificial for my liking.

Color reproduction is the S95H's best feature, meaning shots from colourful movies such as Speed Racer really shine on screen (Image credit: Future)

Moving to HDR sources, I first tested the S95H’s colour reproduction. Watching Speed Racer, a recent addition to my 4K Blu-ray testing rotation, the S95H delivered bright, bold colors that accurately captured the cartoon-style colours of the movie. Close-up shots of Speed Racer show vibrant reds in the interior of his cockpit and his ‘M’ logo, while later scenes show gorgeous, bright blues of clear skies and neon-like greens of a field in a schoolyard.

Comparing the S95H to the G6, I did find that the S95H made some reds a little pale and orange in appearance at times, but viewed in isolation, the S95H’s colors still looked superb. Moving to La La Land, Mia’s yellow dress was punchy, but accurate on the S95H and the gradient of pinks and purples in the sunsets looked realistic, but still lively.

It’s no real surprise that colors looked bold on the S95H, as I measured its HDR color gamut coverage at 89.2% of the BT.2020 colour space and 99.97% of the DCI-P3 color space: both outstanding results.

The Batman (pictured) looks best in Movie mode in bright conditions FutureIn Filmmaker Mode, in a bright room, The Batman is difficult to see Warner Bros / Future

For darker movies, it was important to get the right picture mode for the situation. I found The Batman was too dim to watch in the default Filmmaker Mode with the lights on in our testing lab, but Movie mode worked fine. In a darker room however, Filmmaker Mode worked.

Throughout The Batman, the S95H’s strong contrast shone through, aided by its punchy highlights from its newfound brightness and rich black tones. Whether Batman stood in a dark subway or the camera cut to a ceiling-high, wide-angle shot of the Batcave, there was an excellent balance between light and dark tones.

I found during my testing that in Filmmaker Mode, the S95H was prone to black crush during the darker parts of the movie, resulting in detail loss. Batman’s armor in the aforementioned subway scene is obscured, as the S95H prioritizes deeper blacks. This wasn’t as true in a ‘brighter’ dark movie, such as Alien: Romulus, where detail is more preserved, but there were still hints of black crush.

The S95H's textures are crisp and 3D-like, regardless of what's on screen (Image credit: Future)

The S95H’s textures are crisp and 3D-like, no matter the content. Skin, clothing and objects all look lifelike, especially in HDR. I actually found I preferred the look of the S95H’s skin tones better than the G6 in my comparison of the two.

Finally, motion. The S95H demonstrated good motion throughout my testing, but I found it was best to set motion to 3 blur and 3 judder. Any higher, and motion looked artificial and unnatural. Going back to Speed Racer, the S95H did a good job handling the fast racing sequences as cars swerved from side-to-side. I did find there was some judder as commentators panned across the screen, but I found this on every TV I’ve tested with the disc so far.

I tried out the S95H’s AI Soccer Mode Pro and it was somewhat effective. The commentary was clearer and louder, the picture was more detailed and motion was smoother. If you don’t want to use any AI tools, then Standard picture mode with judder and blur set to 3 worked well for sports.

  • Picture quality score: 5 / 5
Samsung S95H review: Sound quality

The S95H delivers solid built-in sound that's good for movies like Speed Racer (pictured), but a soundbar would do the picture more justice (Image credit: Warner Bros / Future )
  • 4.2.2-channel speaker system with Dolby Atmos
  • Great accuracy and clarity
  • No DTS support

The S95H features a 4.2.2 channel, 70W speaker array and supports Dolby Atmos. There is however no DTS support. Along with its two sound modes, Standard and Amplify, there are AI Sound tools such as Adaptive Sound Pro and Active Voice Amplifier that can be used to adjust sound.

Watching Speed Racer with the S95H set to the Amplify sound mode, the S95H demonstrates solid bass and power, accurately delivering the rumble and revving of engines. Collisions as cars battle during races also have good impact, along with clear speech, even during the most hectic of races.

The S95H’s Object Tracking Sound+ (OTS+) is superb for delivering precise sound placement. When Speed Racer grinds a rail in the opening race, the sound was clean and audible, despite other loud effects.

Trying out the S95H’s AI Sound mode, it adds some width to the soundstage, giving more volume to more subtle effects. However, I personally found that the AI Sound was a little more compressed and some power was compromised, so I preferred the default Amplify setting.

While overall the S95H’s built-in speakers did a good job, I still felt the sound was contained to the screen's width, and while there was some good delivery of Atmos effects, they again were lost in the mix. For a TV with this picture quality, I’d still recommend a soundbar at least for the full cinematic experience.

  • Sound quality score: 4 / 5
Samsung S95H review: Design The new silver frame surrounding the S95H will be divisive FutureThe screen 'floats' in front of the frameFutureThe pedestal stand has been replaced by two feetFuture
  • Extended silver frame will be divisive
  • Stand replaced with feet
  • No One Connect Box included

Arguably the biggest talking point for the S95H this year is the physical design changes compared to last year’s S95F. The most notable is the FloatLayer Design, a silver frame that surrounds the TV, giving it a floating, 3D look. This is going to be a controversial addition and for some, it will mean a re-think on where to put the TV, since it adds width and height.

Personally, I’m not a fan, as I find the silver to be a bit distracting and when viewed off-centre, the frame looks odd.

The black, metal, pedestal stand from the S95F has been replaced by two plastic gray feet. While these feet are sturdy and easy to install, I still feel it’s a downgrade for a premium TV. The TV’s bezel is still sleek and ultra-thin, however, and gives it a high-quality feel (but is slightly spoiled by the frame behind it).

The other big change is the removal of the One Connect Box, an external box that housed the TV’s connections and processing. Now, the ports have returned to the rear panel on the TV itself.

For some, this will be welcome news. The S95H is compatible with the Wireless One Connect Box too, so if you liked the external connections, this is still an option you can add on — and not only that, the box can work in tandem with the TV’s built-in connections, meaning a potential eight HDMI 2.1 ports. Who needs an AVR?

The SolarCell remote returns once again, and while there’s been no real changes or additions to it, it’s still a light, sleek, USB-C and solar rechargeable remote that’s probably one of the better remotes on the market.

  • Design score: 4 / 5
Samsung S95H review: Smart TV & menus

(Image credit: Future)
  • One UI Tizen smart TV platform
  • Vision AI features
  • Home, Gaming, Art Hubs

The S95H uses Samsung’s own One UI Tizen smart TV platform, with the headline addition this year being the Samsung Vision AI Companion, which can be used to find related content to what you're watching, and can answer general questions you may ask AI. Microsoft Copilot is supported.

Tizen supports major streaming apps such as Netflix, Prime Video, Apple TV+ and more.

Tizen uses a number of different hubs as a way to organize relevant apps and content. Home houses streaming apps and content recommendations based on your viewing. Game houses all things gaming, including cloud based apps from the likes of Xbox. Daily hosts apps for office and health use, while Art hosts the Art Store, where artworks can be downloaded to be used as screensavers.

Art mode is a new addition, and basically means you can turn this into an artwork display, just like Samsung's The Frame TV. This may explain the new frame-like design. The Art mode costs a monthly subscription for access to all artworks.

Tizen is intuitive enough and easy to use. There is a space at the top of the home screen for banner ads, but this is common on most smart TV platforms nowadays. One thing I did find frustrating was that whenever I lingered on the home screen, Samsung TV+ would autoplay and overwrite whatever I was doing. There seemed to be no way to turn this off, short of deleting the app.

There are a good number of picture settings present, as well as AI-based tools for picture and sound settings.

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

The S95H is a fantastic gaming TV with a full suite of features (Image credit: Future)
  • Four HDMI 2.1 ports
  • FreeSync and G-Sync supported
  • 9.5ms input lag time

The S95H is an excellent TV for gaming. Across its four HDMI 2.1 ports, it supports 4K 165Hz, full VRR including AMD FreeSync and Nvidia G-Sync, HDR10+ gaming and ALLM. It also features a Game Hub, where gaming related content and cloud based gaming apps such as Xbox and Luna are supported.

The S95H’s gaming performance is smooth and responsive, thanks to its ultra-low, measured 9.5ms input lag time. As I dashed around a desert battlefield in Battlefield V playing at 4K 120Hz, snapping between targets and diving for cover, there was never any sign of judder from the S95H, which expertly handled the chaos.

With its strong colors, high brightness and powerful contrast, the S95H looks great while gaming too. During the same desert mission in Battlefield V, it did a superb job capturing the relentless heat of the African sun. Detail in weapons and textures of environments were crisp and refined throughout gaming as well.

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

(Image credit: Future)
  • Premium OLED price
  • Competitive with other elite OLEDs
  • Great features and performance for the money

As a flagship OLED TV, the S95H carries a premium price tag. The 65-inch model I tested costs $3,299 / AU$5,299, although I’ve seen offers in Australia dropping the same model to $AU4,799.

This puts its pricing right in line with its rival, the LG G6, which costs $3,299 / AU$4,999 for the 65-inch size. Really, it comes down to preference between the two and how important the differences such as total reflection reduction versus maintain black tones are.

Right now, if you want a flagship Samsung OLED, a 65-inch S95F is still available for roughly $2,499 (stock looks depleted in Australia) and while the S95H is an upgrade, the S95F is easily the best value option right now. Once the S95F goes out of stock, which looks to be sooner rather than later, the S95H’s prices will continue to fall, and it’ll be a more-than-worthy successor.

  • Value score: 4 / 5
Should you buy the Samsung S95H?

(Image credit: Future)Samsung S95H 65-inch

Attributes

Notes

Rating

Features

The Samsung S95H has a full suite of features for movies, gaming and smart TV. Dolby Vision HDR is still not supported however.

5 / 5

Picture quality

The S95H's picture is bright, bold, rich and detailed and it's excellent for bright rooms. Some signs of black crush, but an excellent picture overall.

5 / 5

Sound quality

Clear, accurate sound quality with solid bass and impact, but can feel contained to screen. Separate sound is recommended to match the picture.

4 / 5

Design

A new extended silver frame that will prove divisive, plus the central stand is replaced by cheaper plastic feet. Aside from this, the TV does look modern and feels very sturdy.

4/5

Smart TV and menus

A good smart TV platform wit plenty of settings and AI tools. There are some annoying quirks here and there though.

4.5 / 5

Gaming

A full list of gaming features with top-tier performance to match. An excellent elite OLED for gaming.

5 / 5

Value

The S95H comes at a premium price, but has the features and performance to justify it.

4 / 5

Buy it if...

You want a bold, colorful picture
The S95H's picture is brighter than ever, with gorgeous colors and 3D-like textures that look great regardless of what's on screen.

You want an elite OLED for gaming
With four HDMI 2.1 ports that support 4K 165Hz and all VRR options, and razor-sharp performance, the S95H is a superb TV for gaming.

You want to watch in a bright room
The S95H's anti-reflection screen is effective at eliminating mirror-like reflections, even in the brightest rooms.

Don't buy it if...

You want a straightforward design
The S95H's new silver frame will prove divisive, both aesthetically and because it might mean some will have to re-think their TV's placement.

You want Dolby Vision HDR
Like all Samsung TVs, the S95H doesn't support Dolby Vision HDR, instead featuring support for HDR10+.

You're on a budget
A flagship OLED TV comes at a price and while it does mostly justify its price, other, cheaper mid-range OLEDs with similar features are available.

Also Consider

Samsung S95H

LG G6

Samsung S95F

Sony Bravia 8 II

Price (65-inch)

$3,299 / AU$5,299

$3,299 / AU$4,999

$2,499 / N/A

$2,999 / AU$4,999

Screen type

QD-OLED

OLED

QD-OLED

QD-OLED

Refresh rate

165Hz

165Hz

165Hz

120Hz

HDR support

HDR10+/HDR10/HLG

HDR10, HLG, Dolby Vision

HDR10+/HDR10/HLG

HDR10, HLG, Dolby Vision

Smart TV

One UI Tizen

webOS 26

Tizen 9.0

Google TV

HDMI ports

4x HDMI 2.1

4x HDMI 2.1

4x HDMI 2.1

4 (2x HDMI 2.1)

Built-in tuner (US)

ATSC 1.0

ATSC 1.0

ATSC 1.0

ATSC 3.0

LG G6
The S95H's main rival, the LG G6 is brighter and has better black levels in bright-room viewing. It also supports Dolby Vision HDR. The S95H does have crisper-looking textures and the anti-reflection screen for extreme bright rooms, however. This choice may come down to price.

Read our full LG G6 review

Samsung S95F
The S95H's predecessor, the Samsung S95F is available for nearly half the price and has the same features and delivers similar performance in a more standard design. The S95H, however does have higher brightness and improved black-level handling.

Read our full Samsung S95F review

Sony Bravia 8 II
Sony's flagship OLED TV, the Sony Bravia 8 II also uses a QD-OLED panel for outstanding colors and it also delivers a fuller built-in sound. The S95H is brighter and has more gaming features though.

Read our full Sony Bravia 8 II review

How I tested the Samsung S95H

(Image credit: Future)
  • Reviewed in our TV testing room in varying lighting conditions
  • Tested using both SDR and HDR sources
  • Measurements taken using Portrait Displays' Calman color calibration software

The first step in testing the S95H was to determine its best picture modes. I settled on three: Filmmaker Mode for dark-room movie viewing; Movie for bright-room movie viewing and Standard for sports and daytime TV.

After this, I began by testing the S95H's picture quality using both SDR (broadcast TV) and HDR (4K Blu-ray and streaming), focusing on color, contrast, detail, upscaling and motion.

I also tested the S95H's sound quality using reference scenes from Speed Racer among other movies, and I tested its gaming performance using Battlefield V on Xbox Series X.

Once subjective testing was completed, I moved onto taking objective measurements. I did this using a Klein K-10A colorimeter (profile with a Jeti Spectral 15VA Spectroradiometer), a Murideo Six G 8K Metal test pattern generator and recorded measurements using Portrait Displays' Calman color calibration software.

I started with brightness measurements, using white window patterns in sizes 1-100% in both SDR and HDR. The two primary results I focus on are peak (10%) and fullscreen (100%) brightness.

Next, I measured the S95H's color and grayscale accuracy in SDR, and then measured its HDR color gamut coverage, using the DCI-P3 and BT.2020 color spaces, hoping for a result of over 95% in the DCI-P3 space.

We recently introduced two new tests into our measurements. 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.

My final test was to measure the S95H's input lag using a Leo Bodnar 4K HDMI Input Lag Tester. I measured both 4K 60Hz and 1080p 120Hz results in milliseconds (ms).

Categories: Reviews

RugOne Xlink 7 review: A sophisticated rugged 4G walkie-talkie for populated wilderness, but not truly remote regions

Fri, 07/17/2026 - 10:40
RugOne Xlink 7: 30-second review

The RugOne Xlink 7 wants to solve an old problem in a new way. Traditional walkie-talkies are brilliant until you walk out of range. Hills block them. Buildings block them. Distance blocks them. The Xlink 7 sidesteps all of that by using 4G instead of short-range radio, so two or three people can stay in touch across a city, a country, or, in theory, the whole planet, as long as there's signal.

That idea alone makes it worth a look. Add a genuinely tough build, IP68 and IP69K rated, plus MIL STD 810H certification, and you have a device that will survive rain, dust, a drop, or a dunking, all while weighing just 84g. It comes loaded with sensible extras too. A wireless PTT (push-to-talk) remote means you never have to fumble for the unit itself while riding or climbing. An emergency SOS mode, backed by GPS, GLONASS and Beidou positioning, can sound an alarm and share your live location with five quick presses. There's even a basic AI assistant for weather checks and settings, and a noise cancellation system tuned for wind and speed.

None of that comes without trade-offs, though. The biggest one is that this is a cellular device, not a true radio, so it lives and dies by 4G coverage. Head somewhere genuinely remote, deep countryside, mountains, open water, and it becomes a very expensive paperweight. A proper VHF or UHF handset, or a satellite communicator, will keep working exactly where the Xlink 7 cannot. There's no screen either, so every bit of feedback comes through LED colours and beeps, which takes some getting used to. Group calls are capped at three people and thirty minutes, which will frustrate anyone hoping to coordinate a larger crew.

So who is this for? Cyclists, hikers, skiers and runners who mostly stay within reach of a network but want a proper safety net and a simple way to stay in touch with a partner or small group. It might also work for parents keeping tabs on older kids, but surely they’d have phones. It could be an easy panic button for lone workers, as long as they’re not underground.

It's less convincing for anyone heading truly off-grid, where a satellite device or traditional radio still makes more sense, as some of the best rugged phones I've tested already have. Think of the Xlink 7 as a rugged companion for populated wilderness rather than true remoteness, and it starts to make more sense.

(Image credit: Mark Pickavance)RugOne Xlink 7: price and availability
  • How much does it cost? $159
  • When is it out? Available now
  • Where can you get it? Direct from RugOne or via an online retailer

The RugOne Xlink 7 is available direct from RugOne's global store, on Amazon.com for $159.99, and on Amazon.co.uk for $139.99.

Unless I’m mistaken, the RugOne Xlink 7 launched its Kickstarter campaign in June 2026, with a Super Early Bird duo pack priced from $159.99 against a stated standard retail of $299.98 for the same pack, a 47 per cent discount.

Coverage on a popular news site said it has cleared the Engineering Verification and Design Verification stages and was, at the time of writing, running final Production Validation Test builds ahead of mass shipping from August 2026. But that plan evidently wasn’t correct or got changed, because it's already available to buy now.

To be crystal clear, I’m not a fan of companies that don’t need the money running Kickstarter campaigns as marketing exercises, and the way that this one was able to move from announcement to product and retail in a matter of weeks gives the true picture away. That reality being the Xlink 7 was probably finished and in production even before the Kickstarter ever began.

In the bundle that most purchasers will choose, they get a SIM card that works in 41 countries, and that will work for a year. No price has yet been revealed for extending the SIM contract at this time, but you can just buy a data-only SIM for your country and use that instead.

In most countries, this would be a no-brainer based on cost, but if you live in a region where mobile providers must approve each device that connects, it might be an issue.

Depending on how you intend to use this hardware, the price might be seen as competitive or excessive.

Compared to a proper satellite-based communicator, like the Garmin inReach Mini 2 ($509.99), it might seem a bargain. But the Garmin will work in practically any geographic location, and doesn’t need cell service.

Not needing a cell service or a SIM card, Motorola makes an extensive range of walkie-talkies, like the Motorola Solutions Talkabout T475 Extreme. A two-pack of those is only $94.99, and they use FRS radio frequencies, can receive NOAA weather alerts and will work for up to 12 hours on a charge.

There are dozens of brands selling walkie-talkie designs, some using Mesh technology that generally undercut the RugOne Xlink 7, typically offering two handsets for less than the price of one Xlink 7.

But there is an even cheaper choice, and that’s to use Zello on your existing smartphone, which costs precisely nothing. As they say, competing with zero isn’t easy.

Overall, there are some cute features on the RugOne Xlink 7 that might attract some customers, but since they don’t have a fallback technology when there is no 4G service, they seem overpriced.

(Image credit: Mark Pickavance)
  • Value score: 3/5
RugOne Xlink 7: Specs

Product

RugOne Xlink 7

Dimensions

63.6 x 51.7 x 22.95mm

Weight

84g

Build

Plastic body with metal buttons and rubber seals

Durability

IP68 (1.5m for up to 30 minutes) and IP69K under IEC 60529, MIL STD 810H, operating range -30C to 55C

Display

None. Status is shown via seven front LEDs plus audio tones

Chipset

ASR1609S, Cortex R5 at 614MHz

Memory

8MB PSRAM, 8MB ROM

Network

4G LTE, nanoSIM. FDD LTE bands 1/2/3/4/5/7/8/12/20/25/26/28A/28B/66, TDD LTE bands 34/38/39/40/41

Connectivity

Bluetooth 5.2

Positioning

GPS, GLONASS and Beidou

Battery

1,050mAh typical / 1,020mAh rated Li Po, USB Type C charging at 5V 0.5A

Battery life (claimed)

Up to 87 hours standby, 24 hours typical use, 10 hours continuous talk

Calling

Full duplex hands-free voice for up to 3 simultaneous users, 10-minute default call length, 30-minute maximum

AI features

On-device AI voice assistant for Q&A and settings, plus chip and AI-based noise cancellation rated to a peak of 55dB reduction

Safety

Emergency SOS via five rapid presses on the action button, triggers a siren, calls emergency contacts, and shares live GPS location

Extras

Built-in TorchX flashlight, wireless Bluetooth push-to-talk remote ring, dedicated group set-up button

App

RugOne Xlink app for iOS and Android, required to activate the device

In the box

Xlink 7 unit, USB-C to USB-C cable, pre-installed screen film, wireless PTT remote ring, long and short Velcro straps, sports armband, magnetic back clip, lanyard, SIM card (Bundle version only), manual and warranty card

RugOne Xlink 7: Design
  • Tough and tiny
  • Lots of buttons
  • A box full of accessories

(Image credit: Mark Pickavance)Which countries does the SIM card support?

United States, United Kingdom, Germany, France, Italy, Spain, Netherlands, Switzerland, Sweden, Norway, Denmark, Ireland, Austria, Belgium, Finland, Iceland, Poland, Czech Republic, Greece, Portugal, Luxembourg, Hungary, Slovakia, Slovenia, Croatia, Cyprus, Estonia, Latvia, Lithuania, Romania, Bulgaria, Liechtenstein, Vatican City, San Marino, Serbia, Albania, North Macedonia, Bosnia and Herzegovina, Moldova, Ukraine, and Belarus.

The Xlink 7 is a small, octagonal puck that RugOne compares to a chunky earbud case. At 84g and just under 64mm tall, it disappears onto a backpack strap or handlebar far more easily than a traditional VHF or UHF radio ever could. The body mixes plastic with rubber seals and metal buttons, and the whole thing carries an IP68 rating for a 1.5 metre dunking and an IP69K rating against pressure washing, on top of MIL STD 810H certification. That is a serious durability claim for a device this size, and on paper, that puts the Xlink 7 ahead of most consumer electronics in this price bracket.

There is no screen. Every status update, battery level, signal state, Bluetooth pairing, comes through a bank of seven LEDs and a set of audio tones. That keeps the design simple and the waterproofing easier to guarantee, but it also means a genuine learning curve before all those beeps and colours become second nature.

The one that most owners might easily recall is the built-in AI, as even at the lowest volume settings, it shouts information at you like a drill sergeant. Maybe on a windswept hillside or next to a roaring rapids, this might be good, but in less noisy spaces, it seems excessive and bludgeoning.

(Image credit: Mark Pickavance)

Since there is no screen, all the modes and features of the RugOne Xlink 7 are activated using a series of buttons, and there are some simple back-lit icons to provide basic feedback. These tell you if a voice call is active, Bluetooth is being used, battery status, the device is on, volume and mute, and mobile signal strength. But most of these are superfluous, since if you change the volume, for example, the unit will shout at you the current volume setting.

Buttons are provided for powering on, AI, Group functionality and initiating or answering calls.

A single button activates an on-device AI assistant for simple Q&A, weather checks, and device settings, and RugOne pairs a dedicated audio chip with an AI noise-reduction algorithm rated at a peak of 55dB, tuned for conditions up to 40km/h on skis or 30km/h on a bike, according to RugOne. But this technology appears to be deactivated when you’re not on skis or a bike, when you get put on full audio blast anyway.

Rubber plugs cover both the SIM card slot and the USB port, which made me wonder why they weren’t together under a single plug. And, the other feature worth mentioning is that there is a TorchX flashlight, which might become useful if you’ve not reached your basecamp before nightfall.

For those wondering how you configure some of the more complicated aspects, that’s all done through a smartphone app. So, if you want to change those, you’ll need to bring a smartphone, which somewhat undermines the function of the RugOne Xlink 7.

One impressive detail about this device is all the supporting hardware that comes in the box, which includes long and short Velcro straps, a sports armband, a magnetic belt clip, a lanyard and a Bluetooth-connected talk button.

Design score: 3.5/5

RugOne Xlink 7: Hardware
  • Multi-person communication
  • ASR1609S SoC
  • 1,050mAh cell battery

Available in ‘Sports Black’ or ‘Sand Dune’, the RugOne Xlink 7 has some interesting twists on the normal 4G communication model.

These include the ability to have group conversations between three Xlink 7, with each call limited to 10 minutes, or with three connected up to 30 minutes.

Where I’m slightly confused is that in some literature, three users are mentioned, and in others, up to five people can talk. But since I only received two of these to test, I can ascertain which number is correct.

That said, the idea of five people on the same line just sounds like a recipe to step on other people's speaking, so if it only supports three people, it might be more practical.

The platform that this was built on is the ASR1609S, a cost-effective, high-performance 4G LTE IoT baseband processor manufactured by ASR Microelectronics.

This SoC is a single ARM Cortex-R5 core running at 614 MHz, integrating a modem, Bluetooth 5.2, GNSS, power management, 8GB PSRAM, and 8GB Flash in a single assembly.

Positioning comes from a combination of GPS, GLONASS and Beidou, and an emergency SOS mode is triggered by five rapid presses of the action button. That sounds like a loud siren to alert others nearby, automatically calls pre-set emergency contacts and shares a live location through the companion app.

For hikers, cyclists and lone workers, this is arguably a bigger selling point than the group calling itself. But this again assumes that everyone wearing one of these devices is also conveniently carrying their phone.

(Image credit: Mark Pickavance)

RugOne quotes up to 87 hours of standby, 24 hours of typical use, or 10 hours of continuous talk time from the 1,050mAh cell. Those are manufacturer figures rather than independently measured ones, and if you are on the edge of cell service, you might find the battery wears out faster than expected.

I can’t be overly critical of the hardware, since it was made to both fit inside the limited confines of the RugOne Xlink 7 but also to do a specific job that isn’t as general as you might expect from a Smartphone SoC.

But, this SoC didn’t include the technology for PTT-type communications without 4G, which is unfortunate, since most mobile phones can do that trick, and would last longer on battery than the Xlink 7 can.

  • Hardware score: 3/5

(Image credit: RugOne)RugOne Xlink 7: Final verdict

The RugOne Xlink 7 is a difficult call, since I don’t think there is anything inherently wrong with the hardware or the design, except possibly how shouty the AI is.

That said, I strongly suspect that this design was originally intended to support conventional or mesh wireless technology alongside 4G functionality, until someone realised that might affect future income from SIM sales.

What we ended up with is a walkie-talkie that’s useless when you’re away from cell service, which is problematic. Given that lots of cheaper devices will work anywhere without 4G, it brings into question whether the RugOne Xlink 7 is the right product for you.

While I accept that most walkie-talkies can’t link two people on different continents, most can connect those people 100M apart on a mountain or in a jungle, and that’s not a guarantee with this hardware.

RugOne need to put Zello-compatible wireless in the Xlink 8, and make the price significantly more competitive.

Should I buy a RugOne Xlink 7?Oukitel WP66 Score Card

Attributes

Notes

Rating

Value

Affordable, but compared with other walkie-talkies, it is on the pricey side.

3/5

Design

A compact and rugged puck that can be carried in numerous ways

3.5/5

Hardware

Efficient SoC and 1,050mAh battery, but needs 4G network to talk

3/5

Overall

Not suitable for true off-grid use

3.5/5

Buy it if...

You like to walk and talk
With up to three-person communication, this device could be useful for those who work together but are physically separated. Mounted on the armband, using the belt clip or lanyard makes this more easily accessible than a phone.

You might need help quickly
There are certain occupations where it's possible to run into trouble and need assistance quickly, and the ability of this device to send out an alert with your exact position could be a lifesaver. But only if you can push the SOS button five times to summon help.

Don't buy it if...

You like to walk and talk
With up to three-person communication, this device could be useful for those who work together but are physically separated. Mounted on the armband, using the belt clip or lanyard makes this more easily accessible than a phone.

You might need help quickly
There are certain occupations where it's possible to run into trouble and need assistance quickly, and the ability of this device to send out an alert with your exact position could be a lifesaver. But only if you can push the SOS button five times to summon help.

For more ruggedized devices, we've reviewed the best rugged tablets, the best rugged laptops, and the best rugged hard drives

Categories: Reviews

The Mission 1 Pro isn’t just GoPro's flagship action cam, it’s a fantastic all-round vacation camera with the point-and-shoot grip — I just wish it was cheaper

Fri, 07/17/2026 - 07:30
GoPro Mission 1 Pro: One-Minute Review

The Mission 1 Pro is as rugged as you’d expect any GoPro action camera to be, with a highly water-resistant design — even without an additional casing — and a shock-resistant body that can survive tumble after tumble, but with 8K recording quality it enables you to capture footage with a real cinematic feel.

Thanks to impressive subject tracking and GoPro’s HyperSmooth stabilization tech, the Mission 1 Pro can capture the action smoothly whether you’re wearing it yourself, or following your subject along a trail or down a piste.

Plus, thanks to the new larger 1-inch sensor, low-light video quality is better than ever for a GoPro — letting you take advantage of the roughly two hours of 4K 60p recording time available to you on a single charge even as the sun starts to set.

(Image credit: Future)

Meanwhile, HLG HDR format and GP-Log2 support, control over ISO, EV, white balance and shutter speed, and the freedom to record in 8K/30p open gate — the full height and width of the versatile 4:3 aspect ratio sensor — will give you more artistic and post-processing options that make this action camera feel more like a professional piece of kit.

The downside of all this is that the Mission 1 Pro doesn’t come cheap. It’ll set you back $699 / £599.99 / AU$1,099.95 if you aren’t already a GoPro member, while members can take advantage of a healthy discount, with prices starting at $599 / £509.99 / AU$949.95. This sure is pricey even for one of the best action cameras when DJI rivals cost substantially less, but if you’re going to take full advantage of its cinematic capabilities, it’s certainly one to consider.

The only real disappointment is that its photography capabilities left me wanting. With its optional point-and-shoot camera-style grip I had hoped that the GoPro Mission 1 Pro might perform well as a stills snapper, but it did struggle at times. Hopefully, the ILS model with its Micro Four Thirds lens mount will deliver a more all-round performance when it debuts later this year.

The grip does at least help make the Mission 1 Pro much easier to handle when shooting video, and it feels like a useful upgrade for anyone who plans to use this GoPro as their new vacation camera, and take advantage of its improved video and audio quality, and durable design.

GoPro Mission 1 Pro: Price and release date
  • $699 / £599.99 / AU$1,099.95 (non-member price)
  • $599 / £509.99 / AU$949.95 (member price)
  • Other models in the series are the Mission 1 and Mission 1 Pro ILS

The GoPro Mission 1 Pro is available to buy now for $699 / £599.99 / AU$1,099.95 (non-member price, or $599 / £509.99 / AU$949.95 for members), while the more basic Mission 1 will cost you $599 / £529 /AU$949.95 (non-member price, or $499 / £439.99 / AU$799.95). The Mission 1 Pro ILS costs the same as the Pro, but it won’t launch until later in 2026.

Other bundles include one with a point-and-shoot camera-style grip, which I had for my review. This bundle feels quite pricey at $779.99 / £679.99 / AU$1,229.95, seemingly with no member discount at the time of writing.

The Mission 1 Pro and Mission 1 share a lot of the same features and hardware, but the Pro version unlocks 8K 60fps footage and 8K Open Gate 4:3 filming for greater editing flexibility. You’ll also unlock slow-mo 4K video at 240fps, and 1080p up to 960fps for more extreme slow-mo shots.

(Image credit: Future)

Meanwhile the ILS model is interesting as it takes away some features — such as built-in autofocus and the ultra-wide lens of the regular Pro — to give you more control, with manual focus control and a Micro Four Thirds (MFT) mount, enabling you to attach a wide variety of lenses for different cinematic effects. If you’re more of a cinematographer than a casual user, the ILS model could be what you’re after.

That said, even the base-model Mission 1 is a fair bit pricier than the GoPro Hero 13 Black — our current pick for the best overall action camera. If you care about low-light shots the Mission 1 could be worth the price premium, but for a lot of people who are just looking to capture fun clips of their action sports escapades even the basic model may be overkill.

  • Value score: 3/5
GoPro Mission 1 Pro: Specs

Type:

Action camera

Sensor:

50MP 1-inch type CMOS

Displays:

Front: 1.4-inch LCD

Rear: 2.59-inch OLED touchscreen

Memory:

None; supports V30 and Class A2 rated microSD cards

Video:

8K up to 30fps (no crop) / 8K/60p (cropped)

ISO range:

Video: 25-6400

Photo: 100-3200

Burst shooting

60fps

Processor:

GP3 SoC

Connectivity:

BlueTooth, USB-C, 5GHz Wi-Fi 6

Dimensions:

80.1 x 52.1 x 44.3mm (including buttons and lens without hood)

Weight:

207g

GoPro Mission 1 Pro: Design

The ideal action camera is one that can handle just about anything you throw at it, and the GoPro Mission 1 Pro GoPro is a camera that’s designed to be pushed to its limits.

If you’re a fan of underwater video, the Mission 1 Pro boasts a design that’s waterproof to 66ft / 20m without the need for a housing — plus the hydrophobic lens cover should help keep water splashes and droplets from obstructing your view massively when you’re using the camera above the waves.

It’s also rated to work in temperatures between -20C and 45C, with its power and shoot buttons designed to make them easier to press while wearing the kind of thick gloves that are necessary in frigid climates.

(Image credit: Future)

The Mission 1 Pro’s shock-resistant body can also survive tumbles and drops, giving it an almost indestructible feel. While I never pushed the Mission 1 Pro too far, I never felt like I needed to be careful with it.

Moving on from the action-focused aspects, the 2.59-inch OLED rear touchscreen display offers enough real estate for you to easily manage and track your settings while also leaving plenty of room to clearly see your compositions.

Meanwhile, the 1.4-inch front LCD is a good size for vloggers to track what is/isn’t in frame as they talk to camera, with a convenient and concise readout of your shot settings letting you know that you haven’t, for example, accidentally swiped to a different mode while turning the camera 180 degrees.

Included in the box are a lens hood to help reduce glare — just note that it can fall off easily, so keep an eye on it, or be prepared to pick up replacements — a 2150mAh Enduro 2 battery, an adhesive mount, mounting buckle and a thumb screw.

You’ll need to provide your own microSD card, as there’s no internal storage. The Mission 1 Pro relies on V30 and Class A2-rated microSDs for the best performance; A1 cards will work, but will encode more slowly.

You can pick up a series of attachments for this camera, including ND filters; however, the bigger sensor size of this camera means the Hero 13 Black’s suite of lens attachments can’t be used here, and sadly there aren’t, as yet, equivalent accessories for the Mission Pro 1.

Other GoPro attachments, such as harnesses or helmet/bike mounts, should be compatible, as the Mission 1 Pro relies on the same bracket as models that came before.

(Image credit: Future)

Lastly I’ll mention the point-and-shoot camera-style grip attachment, which was supplied to me for testing alongside the Mission 1 Pro and can be purchased separately ($99.99 / £89.99 / AU$154.95) or as part of a bundle. The grip is incredibly simple, yet effective at transforming the Mission 1 into something that feels more like a regular point-and-shoot compact.

When it comes to capturing quick videos, such as clips at the beach or at a festival, the grip makes it easy to hold the camera without the risk that your hand will get in the way of the lens, although as mentioned, the Mission 1 Pro doesn’t perform as well as a stills camera — more on that below.

  • Design score: 5/5
GoPro Mission 1 Pro: Performance

To make video capture easier than ever the Mission 1 Pro features a slew of preset capture modes that adjust settings based on your needs, with modes for Vlogging, SportPOV, TimeLapse, Open Gate, SlowMo, Low Light, Dive and plenty more.

You can tweak the settings for each mode to fine-tune your image quality needs, and also manage modes by hiding ones you never use, or adding custom settings that are your go-tos.

For most scenarios, I found the 4K open gate option to be the most versatile. The image quality is solid, and you have the option to reframe the footage to 16:9 or 9:16 later based on your needs — plus it’s less of a drain on the battery than shooting in 8K.

Vlog-style recording is made easy thanks to the front screen, and automatic subject tracking that centers you in the frame — ideal for casual vloggers who constantly find they steadily drift out of shot unless they pay close attention to the camera they’re holding.

The audio quality is decent too, picking up voices and essential sounds, but cutting out wind noise.

Slow mo is also a lot of fun, though as you’ll see in my example video above, raw untuned footage at resolutions lower than 4K can start to look grainier than is ideal — upscaling and/or sharpening the image with editing software is essential to get things to look better.

The larger sensor also helps in low-light conditions, especially with the new Low Light shooting mode. Unsurprisingly, in proper darkness the camera still struggles, but with some illumination remaining the camera performs well in this mode.

(Image credit: Future)

Where I’m less convinced of the Mission 1 Pro’s abilities is when it comes to stills photography, which is a massive shame considering you have the option to add the point-and-shoot grip.

Whenever I tried to take photos I found myself fighting against its lack of autofocus — or even manual focus — and the less-than-ideal zoom quality. The camera has a fixed focus with a minimum focus distance around 60cm — which counts out close-up photography — and an optimal focal distance of about 1.5m. This also means it isn’t focused to infinity, so landscapes will appear a little soft in your shots, especially since the larger sensor has a shallower depth of field than previous GoPros.

In addition, as soon as you zoom in you’ll find the image quality drops a fair amount, although this is to be expected from the digital zoom this camera uses.

The overall quality isn’t terrible, though, and the point-and-shoot grip does offer some useful versatility for video recording beyond the more traditional action camera use-cases.

  • Performance score: 4.5/5
FutureFutureFutureFutureTesting Scorecard

Attribute

Notes

Score

Design

With its rugged build and larger display you couldn’t realistically want more from the design of the Mission 1 Pro. My only gripe would be that longtime GoPro fans may be frustrated that they can’t, for now at least, bring all of their lens attachments over to this new camera.


5/5

Performance

The Mission 1 Pro delivers some great-looking video with great audio even without external accessories, and even in low light. I’m skeptical of the camera’s photography credentials, though.

4.5/5

Value

The GoPro Mission 1 boasts a slew of pro-level enhancements, although these do come with a higher price tag.

3/5

Should I buy the GoPro Mission 1 Pro?Buy it if…

You want a professional-quality action camera
With 8K recording and a full suite of settings that you can adjust, the Mission 1 Pro delivers as professional-grade camera more so than its predecessors.

You don’t want to think too much
Like its predecessors, the Mission 1 Pro boasts a selection of preset recording modes that you can fine-tune to suit your video needs. If you want good shots without putting in a lot of thought and effort, the Mission 1 Pro will still help you capture great shots.

You want a small camera that’ll last
With a hardy exterior that can survive high heat, freezing cold, and excursions deep below the water, and roughly two-hour battery life when shooting 4K/30p, the GoPro Mission 1 Pro will be ready when you need it.

Don’t buy it if…

You want to capture high-quality stills
As an action camera the Mission 1 Pro is great, but as a stills camera I found it wanting, even if there is a dedicated point-and-shoot grip accessory.

You’re on a budget
The GoPro Mission 1 Pro is a lot pricier than other action cameras out there, and if you’re a more casual and budget-conscious user the upgrades might not be worth the outlay.View Deal

You want lens options
The Mission 1 Pro doesn’t support the lenses GoPro has previously offered with its action cameras like the Hero 13 Black. For lens variety you’ll want to check out the Mission 1 Pro ILS model when that launches later this year.View Deal

Also consider

GoPro Hero 13 Black
A more budget-friendly option, and, even years after launch, still a solid action camera performer, the GoPro Hero 13 Black doesn’t boast the 8K quality of the Mission 1. However if you’re after something smaller and lighter for more casual use it’s an excellent alternative.

Read our GoPro Hero 13 Black review

DJI Osmo Action 6
If you’re already part of the DJI ecosystem, want tools like wireless Hi-Res audio recording when using a DJI Mic 3, or are just after some frankly excellent battery life, decent waterproofing, and a generous 47GB of built-in storage, this DJI camera could be for you. Just note that its video is capped at 4K resolution.

Read our DJI Osmo Action 6 review

Insta360 Ace Pro 2
If 8K is a must, the best alternative for you is the Insta360 Ace Pro 2. Admittedly it isn’t as capable as the GoPro Mission 1 (the 8K quality doesn’t support the best image stabilization) and overheating is an issue, but the Insta360 Ace Pro 2 is a superb all-rounder.

Read our Insta360 Ace Pro 2 review

How I tested the GoPro Mission 1 Pro

I spent just over a month with the Mission 1 Pro, taking it out on excursions to snap photos and videos to test its capabilities not just as an action camera, but as a point-and-shoot video capture tool — with that latter case aided by the point-and-shoot grip.

If you’re planning to use the GoPro Mission 1 Pro as your vacation camera — aided by its durable design and waterproofness — the grip is super helpful at helping to keep you hands out of frame, and as a pure action camera the GoPro fits the same mounts and accessories as previous models like the Hero 13 Black (save for the lens attachments).

Inspired by shows like Hunted and Jet Lag The Game, a lot of my testing focused on running and vlogging with the action camera to capture my fitness progress and to record personal cuts of games of hide-and-seek across London — passing the camera between my friends so they could record their stints too. They found the GoPro super easy to use, with the smoothing tech and subject tracking ensuring thaty vlogs and action shots look great without requiring constant focus on what the camera is doing — you just press go and it’ll come with you.

First reviewed: July 2026

Categories: Reviews

Viaim OpenNote review: I wore this open-ear voice recorder all day, and its AI meeting summaries proved invaluable

Fri, 07/17/2026 - 07:03
Viaim OpenNote: 30-second review

I’ve looked at a fair few of these AI note takers in recent months, and they’re getting progressively more impressive. The Viaim OpenNote takes a slightly different approach to some, like the superb Plaud Note, as in the hardware is designed as a pair of open-ear earphones, essentially the type that hook over your ear with the small speaker unit resting just outside the ear canal, and like so many other earphones of this design, they enable music playback and enable you to make calls.

However, music and calls are only part of the story; they also offer internal recording, making them an ideal option for work and meetings. When you enter the office, simply squeeze the speaker section, and it starts capturing whatever's being said. Once the meeting has finished, the audio can then be sent to the app, where it’s then transcribed and summarised. Unlike some rivals, the recording is activated and stored in the earphones, so no need to use your phone to capture.

In meetings, wearing a set of earphones may well look a bit rude, until you explain, and here’s where the open design really comes into play. As the earphones don’t go into your ear, you can hear everything around you as if the earphones weren’t in. So, throughout the test, I was able to attend meetings, record the session, and afterwards download the transcription for use as key points and action points, and even visualise it using a mind map. In meetings, I found that through the app the “Live Recording” option meant that I could actually take them out of my ear and just leave them on the desk to the same effect.

Where they really came in use was through phone calls, again enabling them to record calls through the App and then deliver the prepared summaries of what had been said and what was needed.

For work, these earphones are exceptional, and I liked that I could work, listen to music and podcasts, talk to people without needing to remove them, and record conversations with a quick squeeze. It all became very second nature with the summaries becoming invaluable. If you love your music, the lack of insulation and isolation in the design will be a bit of a let-down, but for their core use as work-focused, AI-enhanced earphones, they’re impressive.

Viaim OpenNote: Price and availability
  • How much does it cost? From $169
  • When is it out? Available now
  • Where can you get it? Directly from Viam and online retailers

The Viaim OpenNote is priced at $169.99 in the US and is available in black or white directly from the Viaim store.

It's also listed for $221 on Amazon.com, as well as sites like Newegg and Target. A confirmed UK price is still to be announced at the time of writing.

Advanced AI models are available from $9.99 a month / $79.99 a year

  • Value: 4 / 5

(Image credit: Alastair Jennings)Viaim OpenNote: Specs

Type: Open-ear wireless earphones
Connectivity: Bluetooth 5.3, dual-device connection
Codecs: SBC, AAC, device-dependent LHDC
Drivers: high-polymer racetrack-shaped dynamic drivers
Microphones: four, with call noise reduction
Battery: 115mAh per earbud / 750mAh case; 19 hours (earphones) / 53 hours (total with case)
Fast charge: 3 hours from a 10-minute charge
Weight: 10.5g per earbud / 55.5g charging case
Frame: 0.8mm titanium memory wire, silicone contact surfaces
Water resistance: IP55
Software: iOS and Android app, plus web platform
In the box: earphones, charging case, USB-C cable, quick-start guide
Warranty: 12 months
Price: $169.99 (UK price TBC)

Viaim OpenNote: Design

A first look at the OpenNote package, and it would be easy to mistake these for a standard set of over-the-ear open earphones, rather than an advanced set of AI-enhanced note-taking earphones. The design differs from other over-the-ear earphones in that the small speaker unit rests just by the opening of your ear canal rather than sitting in it, which means there’s no airtight seal, so no boost in base or isolation from the world beyond the audio that you’re listening to.

The OpenNote, on the other hand, will play music and podcasts perfectly well, though if you are an audiophile, the depth of tone will disappoint. However, these are for work, not play. Listen to music and podcasts by all means, but the OpenNote design means that if someone talks to you, you’ll hear it instantly. Just turn the volume down, if needed, and chat. They essentially give you a personal version of listening to traditional radio while still allowing you to carry on conversations.

However, the design, available in black or white, simply hooks over your ear, and a 0.8mm flexible titanium wire lets you wrap each in place securely. The slender design and flexibility meant that, even though I wear glasses, the earphones sat neatly alongside the arms of the glasses.

The earphones are also compact, each weighing 10.5g, which is light, and, thanks to the design, even when hooked over the ear, they didn’t put any noticeable pressure on my ear and were surprisingly comfortable to wear all day.

(Image credit: Alastair Jennings)

Inside is a small battery that lasts a reported 19 hours between charges, and the charging case, which weighs 55g, can give the buds a boost, enabling 3 hours of use from a 10-minute charge and up to 53 hours in total.

Checking over the earphones and case, it all seems solid enough, with the case featuring a single USB-C port for charging, and the earphones sitting inside to store and charge.

The buds also offer IP55 protection, which should stop dust, sweat and light rain, so they’ll survive most conditions, just don’t go swimming in them.

Beyond being used as wireless headphones, the recording and playback features are all activated by a pinch, while the transcription features require the app to work.

  • Design: 4.5 / 5

(Image credit: Alastair Jennings)Viaim OpenNote: Features

As with all of these devices, Viam has come up with its own feature names for many of the earphones' functions, with the main one being FlashRecord. This is essentially the feature the earphones are designed around, and it enables you to record directly onto the earphones without needing to control them with your mobile phone. This means you can be fast and responsive when you need to take notes, without fumbling around for a phone, dictaphone or notepad, depending on how you work.

Once the recording has been captured, you can connect to the App, download it, and transcribe it. What’s impressive here is that if you’re on a call, you can get real-time transcription in 78 languages and, apparently, 145 regional accents. Once the text transcription is complete, you can get it delivered as a key, an action point, notes, or mind maps, among several templates. This in itself is nothing new, but nonetheless, it is incredibly useful, and if you need to, you can share that transcript live with a colleague.

What I like about the companion app's feature set is that once you’ve finished recording, you can automatically have it transcribed in real time. A difference between this and many other AI Note hardware options is that 600 minutes of transcription are included per month for free, which is far more than most other options.

In addition to transcribing the audio you’ve recorded, the app can also transcribe existing recordings and, again, apply templates to the way that information was supplied.

When it comes to connectivity technology, the earphones utilise Bluetooth 5.3 with dual-device pairing and support for SBC, AAC, and device-dependent LHDC codecs. To ensure excellent audio pickup, there are four microphones with electronic call-noise reduction for voice calls, although it’s worth pointing out that this is very different to the sealed-ear active noise cancellation you’ll be used to with standard in-ear options.

One of the big issues with many AI transcription hardware is that there is always a subscription model attached, and that’s true here as well, with a free allowance of 600 transcription minutes a month; anything beyond that goes onto the paid models and again if you want to upgrade the AI model.

(Image credit: Alastair Jennings)
  • Features: 4 / 5
Viaim OpenNote: Performance

(Image credit: Alastair Jennings)

After a quick charge to 100%, I downloaded the APP, which, in the literature, is referred to as OpenNote; however, searching for that in the Apple Store just returned a variety of unrelated apps, and eventually typing in Viaim brought up the correct option. Once downloaded and connected via Bluetooth, the home screen appears. To connect, click the add device button at the top. After a quick scan, it’s set and ready to go.

The home screen shows a variety of sample recordings to give you a flavour of what's possible, then you can make your own through the app interface or transcribe existing recordings. To make a recording through the App, you hit the red record button at the bottom-centre of the screen. On the first push, it pops up asking for a few more details about you, what job type and position, this is to fine-tune the experience, but it feels a little invasive.

After that, each time you hit record, you can access different recording types: Call Recording for phone calls; Audio and video recording for real-time transcription; Live recording for meetings; and Live Translation and Recording if you need translation. I opted for English-to-French in this test.

I’ll run through these options first, as they offer more advanced transcription options. In all cases, the quality and accuracy of the transcription from the recordings were good; however, not quite 100%. With some words, such as card constantly being captured as Cart and earbud as Earbi, aside from small word errors, the action reliability overall was good. What I liked about the system was the ease of switching between recording types, all done through the app, with the earbud mics picking up the audio.

Having tested Ai earphone options in the past, the accuracy here with the dedicated hardware is a step up, though still not quite 100%. The live recording, where you can essentially pop the earphones down on the table during a meeting rather than wearing them, worked incredibly well, and the transcription started as the conversation began. What I liked here is that it can identify the speakers although not in realtime. It does this after the meeting: as you look at the transcription, click the “Speaker diarization” button, select the number of speakers, and the App identifies and labels accordingly. Again, this worked well, and best of all, this is included in the free plan.

Through this test the AI model that the App used was GPT 5.4 Nano, although there are other options including Gemini 3 Flash, Claude Haiku 4.5 which are all free options and then GPT 5.4, Gemini 3.1 Pro and Claude Sonnet 4.5 all incur a charge of £9.99 a month or £79.99, however, those slight miss transcriptions of the free models do take a sudden uplift on the paid for versions.

The live translation is also handy, although not quite as smooth as dedicated AI translation options. You choose the main language, in my case English, and as I speak, it translates into French. However, when someone answers in French, you then need to switch the main language to French and the translation language to English. It all works well, but it isn’t an easy switch, and it would have been good, at least, to have a speaker 1 main language and speaker 2 main language so you could quickly flip between the two.

At present, this is all about the app and not the hardware, although the small mics play their part throughout.

Popping the earphones in, they fit extremely well, with the speaker units resting at the openings of my ear canals. The first step before checking out the recording functions was to listen to some music, and in this user scenario, they work much like any other headphone connecting to whatever app you use and playing the music.

It’s instantly apparent that listening to music or podcasts isn’t the intended primary use, more through the open design than audio quality. As the speaker unit rests in front of your ear canal rather than in it, there’s no seal, so the audio lacks the depth I’ve come to associate with in-ear. However, in the office, listening to a bit of music, you can hear the content perfectly well, and everything else that’s going on around you. And if someone wants to talk to you or shout to you across the office, the earphones don’t muffle the sound; it’s a far more sociable solution for the office environment than standard headphones. In fact, it's more like listening to a traditional radio in that respect; you can have the audio in the background.

To record a conversation, simply squeeze the main section of the bud for 3 seconds. You'll hear a confirmation sound, and then you know the earphones are recording. When the conversation stops, another squeeze ends the recording.

In the App options, there is the FlashRecord option. If this is selected, the track is automatically downloaded to the phone once the recording ends, ready for transcription. At this point, you need to go to the app, click Transcribe, and then you’ll get the summary, transcription, and mind map. There are additional options here as well, with the transcription process taking around a minute for most short conversations and longer as the length of those conversations increases. That process takes around a minute to download a 15-minute recording from the earphones to the iPhone 15 Pro and a further 42 seconds to transcribe and generate the summaries.

While most of the options are straightforward, the workflow sometimes requires an additional step, and you can’t help but feel that an auto-switch would be a good idea. When taking calls, for instance, you need to select the call option from the App when recording. While a quick pinch will answer a call, it doesn’t automatically start recording; you need to select that from the app.

However, there’s no getting around how useful the summaries are and the ability to share the transcripts afterwards. Through the test, I used the headphones for a couple of weeks, with them being active through-out the day, playing music or recording from 7:30am through to 7pm in the evening and then being put on to charge overnight.

Through that time, I recorded several conversations and phone calls. While the recording process wasn’t at first that natural, it felt like something that would come with time, and ultimately, aside from letting people know that you were about to record, it fitted in well with day-to-day working life, and there was absolutely no doubt that the transcriptions and summaries were extremely useful.

  • Performance: 4.5 / 5
Viaim OpenNote: Final verdict

(Image credit: Alastair Jennings)

These earphones work on several levels, from listening to music and podcasts, to recording and transcribing meetings, conversations and calls, to being the perfect option for busy working environments where traditional earphones can be unsociable due to the isolation.

On the first point, listening to music, think of it as a background radio, you can get good volume if you need it, but at the same time keep the volume low, and you can hear everything around you , even have conversations without removing them. To the last point, this means that if someone needs to get your attention from the other side of the office, they can. You may not get the audio depth of in-ear or cans, but in a working environment, these are probably a better option.

Then there's the app functionality, which gives you access to the advanced features and different language models. During the test, I used GPT 5.4 nano, which worked well but occasionally omitted a few words or replaced them with close-but-not-quite-right alternatives. However, the summaries and the usefulness of what it could do, all on the free tier, were exceptional. If you take the step up to one of the newer, more advanced models, the price starts to climb, but the quality of the transcription improves.

Away from the app and the simple squeeze to record gesture makes them easy to operate, and if you’re around the office, then this works incredibly well, and I even could in meetings with the earphones on the desk, even without switching to the Live mode in the app, the earphones were still able to pick up what was said with ease.

At the end of the test, the usefulness for work is readily apparent: you can document your day through snippets of transcribed audio, which are then turned into useful formats that enable summaries and action points. I do wish there were a little more automation and that call recording could be activated from the headphones, but still, there’s a lot on offer here.

Should I buy a Viaim OpenNote?

Value

Excellent value for money, especially with the free 600 minutes of monthly transcription

4/5

Design

Surprisingly comfortable to wear and easily fits around glasses if needed

4/5

Features

A little more automation through the modes would be good, but a solid set of features

4.5/5

Performance

Even on the free tier, the transcription quality is good, boosted as soon as you pay for a subscription to a more advanced model

4/5

Overall

Great option for busy professionals who need to take notes from conversations, meetings, and calls.

4/5

Buy it if...

Meetings fill your days.

If you switch between conversations with colleagues, meetings and calls, and need summaries of everything, then this is a superb option with more in-depth analysis available through subscription models.

Open-ear comfort matters

If you don’t like in-ear earphones, these are a great alternative, and their open design means you can hear what’s going on around you, making them a better office option.

Don't buy it if...

Music is important

Without the in-ear seal that earphones offer, music and podcasts lack the audio depth through this open design, so while the audio is good, it won’t satisfy audiophiles.

Consent is a problem.

This is worth considering. The fact is that you will be recording people, and really, you should be seeking consent. During the test, a quick ask was met with agreement, and most people wanted the meeting transcripts anyway.

For more note-taking tools, we reviewed the best speech-to-text apps around.

Categories: Reviews

The Medion Signium 27 S1 isn't going to turn the computing world upside down, but it's a surprisingly capable all-in-one desktop with a sensible price tag

Fri, 07/17/2026 - 06:27
Medion Signium 27 S1: One-minute review

I'm a big fan of all-in-one (AIO) PCs, so I was pretty eager to get my hands on the Medion Signium 27 S1. I've long been a big proponent of the idea that we need more budget options in the PC hardware market, and with the current pricing crisis surrounding PC components like RAM and GPUs, reasonably priced systems are more important than ever.

Unfortunately, my excitement to review the Signium 27 S1 may have been somewhat misplaced. This certainly isn't a bad AIO desktop, offering decent (if unspectacular) performance in a clean, compact design. But there are a few too many small flaws here that make it difficult for me to recommend it wholeheartedly; if you're looking for one of the best all-in-one computers, this probably isn't it, though I do still think it can fill a certain niche in the market.

(Image credit: Future)

For the uninitiated, Medion is a German electronics company that cut its teeth producing budget PCs and notebooks in the 2010s and was recently purchased by Lenovo (whose leadership appears content to let Medion keep doing what it was already doing). I've tested some of Medion's gaming laptops in the past, and while they rarely wow, they're typically pretty good in terms of value for money.

And to be fair, the Signium 27 S1 is indeed good value for money. Its design language (particularly of the bundled keyboard and mouse) is clearly meant to evoke the Apple iMac 24-inch M4, and if you're only looking to do basic everyday tasks on your PC, it can offer a similar experience to Apple's excellent AIO for a far lower price. But if you crave the high-end build quality of Apple hardware or want a PC that can handle more demanding workloads, this won't be the right one for you.

Medion Signium 27 S1: Price & availability

(Image credit: Future)
  • How much does it cost? Starting at $875 / £649 (around AU$1,250)
  • When is it available? Available now
  • Where can you get it? Available in the US, UK, and Australia

With a starting price of $875 / £649 (around AU$1,250), the Medion Signium 27 S1 is aggressively positioned in the all-in-one PC market, undercutting similar offerings from the likes of Lenovo and MSI.

There are a few different configurations available, which seem to vary greatly from region to region. My review unit uses an Intel Core 7 240H, while the cheapest configuration available uses the Core 5 210H. 1TB of storage comes as standard, which is very nice for the price, with 16GB of RAM in the lowest configuration and 32GB in my review model.

The closest comparison is the HP OmniStudio X, which costs $830 for the 27-inch 1080p configuration with an Intel Core Ultra 5 CPU. The HP AIO offers superior build quality and very marginally better performance, which makes it a more attractive option for US shoppers – but Medion wins in Europe and Australia, since that super-budget configuration of the OmniStudio X is only available in the US.

The only real problem with the Signium 27 S1 from a purchasing standpoint is availability. It's available exclusively through Aldi (yes, that Aldi) in the US and Australia, which means the prices above are pretty much just guidelines since Aldi retains the power to adjust the price on a per-store basis – though of course, you may well find one for cheaper. Fortunately for UK consumers, you can get it through Amazon or directly from Medion's website.

  • Value: 4 / 5
Medion Signium 27 S1: Specs

(Image credit: Future)Medion Signium 27 S1 specs

Base configuration

Review configuration

Price:

$875 / £649 (around AU$1,250)

$1,150 / £849 (around AU$1,635)

CPU:

Intel Core 5 210H

Intel Core 7 240H

Graphics:

Integrated Intel Arc Graphics

Integrated Intel Arc Graphics

RAM:

16 GB DDR5

32GB DDR5

Storage:

1TB SSD M.2

1 TB SSD M.2

Display:

27" FHD (1920 x 1080), IPS, non-touch, 400 nits, 60Hz

27" FHD (1920 x 1080), IPS, non-touch, 400 nits, 60Hz

Ports:

Ethernet (RJ45), 2x USB-C, 4x USB-A, HDMI-in, HDMI-out, Combi audio jack

Ethernet (RJ45), 2x USB-C, 4x USB-A, HDMI-in, HDMI-out, Combi audio jack

Wireless:

Wi-Fi 6E, Bluetooth 5.3

Wi-Fi 6E, Bluetooth 5.3

Camera:

1080p webcam with privacy shutter

1080p webcam with privacy shutter

Weight:

3.8kg / 8.38lbs

3.8kg / 8.38lbs

Dimensions (H x W x D):

615 × 180 × 480mm

615 × 180 × 480mm

Medion Signium 27 S1: design

(Image credit: Future)
  • Sleek design with easy assembly
  • Limited range of screen movement
  • Solid port selection

Gone are the days when AIO PCs were chunky, ugly devices. Now even a budget all-in-one can look good – and the Medion Signium 27 S1 certainly does look good.

Things do begin to fall apart a little once you actually touch it, though. The three buttons on the underside of the display are unsatisfyingly spongey, and although the base is solid metal and feels fairly durable, the rest of the device (including the keyboard and mouse) is made of cheap-feeling plastic. The mount is also very limited, only allowing for a small range of tilt with no height or rotation adjustment.

Still, there are several redeeming features here. The whole thing is very easy to assemble and start using, and the port selection is good for a PC in this price range, with a USB-C and USB-A on the side of the unit for easy access plus another USB-C, three more USB-As, Ethernet, and HDMI inputs and outputs – meaning you can either connect a second display for productivity, or use the whole device as a dumb monitor for a different system.

The webcam is merely passable, providing 1080p recording with pretty washed-out colors. It'll work for Zoom meetings, but don't expect to look good. On the bright side, there's both a physical camera shutter and a kill switch (which is a little redundant) for privacy purposes.

(Image credit: Future)

The display is decent enough, more than capable of handling everyday office tasks, and built with nice slim bezels. With a resolution of 1080p, a 60Hz refresh rate, and decidedly average color reproduction, it's not great for gaming or watching movies. The maximum brightness is fine, but again, it could definitely be better. Unsurprisingly, this monitor doesn't support HDR.

The IPS panel used here has a good-quality anti-glare coating, which helps offset the lackluster brightness; I had no problems using it in a brightly-lit room in the middle of the day. Strangely, the display can actually be raised to a 73.5Hz refresh rate, but doing so immediately knocks the resolution down to a blurry 720p, so 60Hz is the effective maximum (as listed on the spec page for the Signium 27 S1).

Surprisingly, the Signium is upgradable, with the option to remove the back panel and swap out the RAM and SSD for higher-spec components should you so desire. My review unit wouldn't really benefit from this kind of bump in performance terms, but being able to add more storage is definitely a plus.

FutureFutureFutureFuture

Lastly, the Signium 27 S1 comes bundled with a keyboard and mouse, both of which are clearly meant to evoke the aesthetic of Apple's Magic peripherals. They're absolutely nowhere close to Apple's hardware in terms of quality, immediately feeling cheap and tacky under the fingers.

They work, but they're undeniably very far from any of the best keyboards and best mice, especially the keyboard, so you'll most likely want to consider upgrading unless you have a high tolerance for poor-quality technology.

  • Design: 3.5 / 5
Medion Signium 27 S1: Performance

(Image credit: Future)
  • Good performance for basic workloads
  • Ill-suited for gaming and creative tasks
  • Sound quality is poor

Here's how the Medion Signium 27 S1 performed in our suite of benchmark tests:

GeekBench 6 (single-core) 2,409; (multi-core): 10,227

3DMark Fire Strike: 4,337; Time Spy: 1,617; Night Raid: 16,686

CrossMark Overall: 1,540; Productivity: 1,473; Responsiveness: 1,287; Creativity: 1,719

Sid Meier's Civilization VI: Gathering Storm (1080p, High): 16 fps

Without beating around the bush, the performance on offer here is merely alright. If you want a svelte all-in-one desktop for basic office tasks like web browsing, word processing, and video calls, then it can get the job done very competently. It comes with Windows 11 as standard and the usual free trial of Microsoft 365.

I found that for my straightforward work, the Signium 27 S1 was very responsive and effective, giving me no noticeable slowdown or issues with productivity. Once I swapped out the mouse and keyboard for something more amenable to my tastes, I actually quite liked working on it.

But for more demanding tasks, like gaming or creative workloads, the Intel Core 7 240H falls short. You can squeeze a bit of casual gaming out of it by tweaking down the graphical settings and using resolution upscaling tools like AMD FSR or Intel XeSS, but don't expect to be playing Cyberpunk 2077 on this PC.

(Image credit: Future)

Creative tasks offer similarly lackluster performance. While the Signium is arguably capable of low- to mid-level 3D rendering, digital art, and video processing, it's really not ideal for that sort of work. While not part of our standard benchmarking suite for AIO PCs, I fired up Canva and Photoshop during my testing period and found that it really started to struggle once numerous layers were involved.

Finally, you'll want to get your hands on a decent headset or a set of the best computer speakers if you have any intention of playing audio via this PC. The integrated speakers are weak and tinny with poor noise cancelling, more or less hopeless for anything beyond very basic video playback.

  • Performance: 3 / 5

(Image credit: Future)Should you buy the Medion Signium 27 S1?Medion Signium 27 S1 scorecard

Attributes

Notes

Rating

Value

The pricing here is competitive, but availability issues and configuration confusion might turn off some potential buyers.

4 / 5

Design

It looks excellent and offers solid functionality, but the build quality is lackluster.

3.5 / 5

Performance

Performance in basic tasks is good, but don't expect to run any demanding software or get good audio performance from the built-in speakers.

3 / 5

Total score

The Medion Signium 27 S1 offers an undeniably solid value proposition, but fails to impress in a few key areas.

3.5 / 5

Buy the Medion Signium 27 S1 if...

You're on a tight budget
In terms of value for money, this AIO delivers the goods. Few desktop systems can offer this sort of spec sheet at this price point.

You want an attractive all-in-one computer
Despite my issues with the build quality, the Medion Signium 27 S1 looks excellent considering the price point.

You want an extra monitor and an extra PC
Using the Signium 27 S1 as a second monitor is a seamless process, which is a neat bit of additional functionality.

Don't buy it if...

You need strong performance
Even with the upgrade options, there's no real chance that you'll be able to use the Signium 27 S1 for creative workloads or triple-A gaming.

You want good build quality
Although it looks nice at first glance, this isn't a system that was built to a premium standard. The bundled keyboard in particular feels extremely cheap.

Also consider

If my Medion Signium 27 S1 review has you considering other options, here are two other AIO PCs to consider...

Apple iMac 24-inch M4
The Apple iMac 24-inch M4 is the pinnacle of this type of computer and still sets the bar, especially in the looks department. It’s also fairly powerful thanks to Apple’s M4 chip, even though it hasn’t gotten a meaningful update outside of that Apple silicon and upgraded RAM in quite a while.

Read the full Apple iMac 24-inch M4 review

HP OmniStudio X
The lower-spec version of the HP OmniStudio X 27 in the US is probably the closest product to the Signium 27 S1, making it a very strong alternative – plus, it offers higher-spec configurations with discrete graphics, if you're willing to drop a bit more cash.

Read the full HP OmniStudio X review

How I tested the Medion Signium 27 S1
  • Tested for one work week
  • Used it for productivity and gaming
  • Ran it through our standard benchmarking suite, plus some extra tests

I used the Medion Signium 27 S1 as my regular work system for one week, swapping it out for my everyday desktop at home and using it for the usual range of work I do for TechRadar: online research, video calls, and writing reviews like this one.

I also ran our usual selection of benchmark tests (which you can see in the Performance section of this review) as well as firing up some extra programs to do further testing, including Canva, Photoshop, and Cyberpunk 2077 (which ran very poorly, no surprise there).

I've been reviewing PC hardware for more than eight years, testing all kinds of products from desktop computers to individual peripherals. I put every bit of my industry experience into my review process, so you can trust that it's both accurate and impartial.

  • First reviewed July 2026
Categories: Reviews

Heartstopper Forever is the best farewell that fans could have hoped for as new Netflix movie makes Nick and Charlies the most vulnerable — and adult — they've ever been

Fri, 07/17/2026 - 02:01

All good things must come to an end, and unfortunately for Netflix subscribers, that includes the blossoming romance between Nick (Kit Connor) and Charlie (Joe Locke). The Heartstopper franchise is drawing to a close with Heartstopper Forever, a feature film in lieu of a full fourth season.

Like most fans when they first heard the news, I felt cheated. Much like the original graphic novel books by Alice Oseman, Nick and Charlie's story is one best told over time. Two teens grappling with their feelings and identities need time to breathe together, let alone without their smorgasbord of friends who also all have their own delicious narrative arcs.

Now I've seen all 114 minutes of Heartstopper Forever — which is the equivalent of about 4.5 standard episodes — I stand corrected. As Nick, Charlie, and the gang all brace before going their separate ways to university, a feature film actually reflects their growing maturity and crises of confidence much more fittingly.

Newsflash, people: Nick and Charlie aren't kids anymore. In fact, the new Netflix movie wastes little time reminding fans of that, with a significant increase in drinking, partying and all-out sex scenes. Tender and wholesome romance can have an incredibly passionate side, too.

As a Heartstopper fan who has been in the trenches since the release of Oseman's first novel installment, Heartstopper Forever feels like the most satisfying ending that's able to be delivered. Nobody really wants to be in this position, but all of my questions are answered, and every single character is set up for their future away from our prying eyes.

Heartstopper Forever delivers everything a hardcore fan will want

You're going to have to trust my (excellent) judgement on the above statement, because there's no way I'm divulging anything even faintly resembling a spoiler in this review. As we know, Nick is getting ready to leave for university, and Charlie is taking on new responsibilities at school.

Elle (Yasmin Finney) has her mind set on big artistic goals, which means her relationship with Tao (William Gao) also hits its snags. More than any other characters' storylines, both relationships hit on the central theme of worth: does teenage romance even mean that much anyway?

As the push-pull effect of university and a daunting, vague future takes hold, Nick falls apart at the seams. Unlike Charlie, who has always been able to effectively communicate how he's feeling, Nick doesn't know how to describe what's going on in his head. It has the pair doubting the validity of their love and connection, even though nothing is overly wrong from an objective point of view.

It should be frustrating to watch two teenage boys self-sabotage, but the reality is overwhelmingly poignant. Even though the movie is called Heartstopper Forever, nothing in life is guaranteed — and I, for one, am fed up with pretending that doesn't keep everyone up at night.

As Tao points out, everyone has assumed up until this point that Nick and Charlie are a "perfect couple," and it's fascinating to watch how they deal with actual grown-up problems. Oseman has always had a unique knack for conveying the best of what love has to offer, and she's just as adept at holding a mirror up to the worst.

On top of this, watching the boys get physically intimate, drunk, and accosted by topless men wearing leather chaps at the local gay club feels like emotional whiplash in itself. Socially, we seem to have a difficult time understanding that young people grow up to do adult things, and Oseman handles these changes with touching sensitivity. There are some fans out there who have been waiting on tenterhooks for these moments... and the reality is spot-on.

Anna Maxwell Martin, I love you... but Olivia Colman was the better Sarah Nelson

(Image credit: Netflix)

So we can tick off the fact that none of our favorite characters are left hanging, and we know exactly what's happening with them and where they're going. Fantastic. However, there are a few minor misdemeanors that need addressing.

The main thorn in Heartstopper Forever's side the recast role of Sarah, Nick's mum. I feel like an absolute heathen even bringing this up, seeing new Sarah, Anna Maxwell Martin, is one of my favorite actors in the country. But when you remember that you once had Olivia Colman in the same role — and that she delivered one of the best scenes in Heartstopper's history thanks to Nick coming out — well, there's a somewhat sour taste.

Heartstopper Forever is the most narratively and tonally different installment of Nick and Charlie's story to date, but it is still essentially more of the same at its core. Don't get me wrong, this isn't necessarily a negative... but if you've come to the movie looking for something new, you're not going to obviously find it.

Still, Oseman should give herself the biggest paycheck possible for what she's been able to achieve. It's not easy to deliver a finale that already looks nothing like what everyone expects it to, let alone make the final result compelling, endearing, and ultimately remarkably satisfying.

Heartstopper Forever really is forever... at least, it is in my house, where I'll be replaying it so much that Netflix might issue a warning. Its spirit and generation-defining impact will live on, and that might be the most special achievement the streamer has ever been responsible for.

Categories: Reviews

TobenONE UDS060 review: This compact 11-in-1 USB-C dock is one of the smallest I've ever tested

Thu, 07/16/2026 - 11:48
TobenONE UDS060: 30-second review

Most budget docking stations look and behave almost identically. A handful of USB ports, an HDMI output, and maybe Ethernet if you are lucky. The TobenONE UDS060 tries something different. Alongside the usual 11-in-1 connectivity, it adds four physical shortcut keys and a rotary volume knob, both of which can be reprogrammed through a companion app.

On paper, that combination of practical connectivity and genuine customisation is unusual at this price.

The ports on the dock include the usual USB suspects, an audio jack, a LAN port and dual HDMI outputs for connecting monitors. That’s the same as many inexpensive USB-C docks, but what makes this one different is the programmable button and dial technology.

Those might be justification to buy this, but there are at least two significant reasons not to purchase it. The first is that it doesn’t come with a PSU, forcing you to either use your laptop supply or purchase another to power the dock. And the second is that this is a USB-C dock that uses, at best, a 10Gbps connection to the computer, and then shares that across all the ports on the dock. That limits all the USB ports to 5Gbps, or less if you use more than two of them. While it will work with USB4 and Thunderbolt, those connections don’t increase the bandwidth available to the dock ports.

While it might not be the best docking station I’ve tested, it’s certainly one of the most unusual. And if TobenOne ever made and uprated model, it could be a game-changer for some creative people.

TobenONE UDS060: Price & availability

(Image credit: Mark Pickavance)
  • How much does it cost? $89/£69/€81
  • When is it out? Available now
  • Where can you get it? Direct from TobenONE

Docking stations can be expensive items, but the TobenONE UDS060 is relatively affordable at $89 for US customers, £69 for those in the UK, and €80.95 for those in the EU.

It's also available Amazon.com, currently priced at $88.

For those outside the US, you'll need to go direct to TobenOne. But since the company does sell products through Amazon, its appearance on other regional sites is probably only a matter of time.

With such an unusual form factor and features, there aren’t any docks that directly compete with this one. However, TobenOne also makes the UDS048, a simplified design with a single HDMI port, and that can be bought on Amazon.com for only $56.99.

If you are not interested in buttons and merely want a USB-C Dock, then the UGREEN Revodok Pro USB-C Hub is only $15.99 on Amazon, and its USB ports are at least Gen 2 (10Gbps) speed.

  • Value: 3.5 / 5
TobenONE UDS060: Specs

Model

UDS060

Connection type

11-in-1 USB-C, compatible with full-featured USB-C, USB4 and Thunderbolt 3/4 hosts.

Video outputs

2x HDMI, up to 4K at 60Hz each on Windows with DP1.4 MST. Mirrored only on macOS, single 4K maximum.

Data ports

USB-A and USB-C, both up to 5Gbps.

Networking

Gigabit Ethernet.

Card reader

SD and microSD.

Audio

3.5mm combo jack.

Power delivery

Up to 100W USB-C PD passthrough. Charger not included.

Controls

4 programmable shortcut keys plus a rotary volume knob with press function. TobenONE quotes 170 fixed combinations plus custom settings through its companion app.

Software

TobenONE app, required to unlock shortcut key and knob customisation. Basic docking is plug and play without it.

Operating systems

Windows 10/11, macOS on MacBooks 2016 or later, ChromeOS if the laptop has full USB-C port

Warranty

2 Years

TobenONE UDS060: Design

(Image credit: Mark Pickavance)
  • Unique design
  • USB-C 5Gbps
  • No PSU included

The UDS060 follows the compact rectangular design common to this class of dock, finished in a plain grey plastic shell. TobenONE positions the shortcut keys and knob prominently on the top surface, which is the dock's obvious visual differentiator against more conventional rivals.

If we ignore that feature, what we have here is a basic USB-C 11-in-1 Dock (if you include the PD port as a port), that combines USB, LAN, Audio, SD Card readers and dual display HDMI in a remarkably compact form factor.

On the front are two USB-A and one USB-C, all 5Gbps spec, unfortunately. The right side has dual card readers, one for SD and the other for MicroSD. The left is unused, and the rear has the two HDMI ports, a 3.5mm audio jack, the USB-C that links it to the host, and another that is for the power supply and a single 1GbE LAN port.

(Image credit: Mark Pickavance)

Given that this dock might only be connected via 10Gbps USB-C, these ports seem adequate, though if you use USB4 or Thunderbolt, you might expect faster USB and a 2.5GbE LAN port. For them, it might be nice to see a Pro model in the future, with all the ports upsized and the construction moving from plastic to metal.

To my mind, the whole point of a docking station is that it’s a single cable connection and you are ready to rumble. But here, you need to remove the laptop PSU from the laptop bag and plug it in before connecting the dock. The issue here is that adding a 100W-capable PSU would have made this device more expensive, but without it, that cost transfers to the buyer, making the outlay more, but by stealth. People aren’t stupid and will realise that the additional cost was transferred intentionally.

On the host side, the UDS060 works over full-featured USB-C, USB4 and Thunderbolt 3/4/5 ports. A Thunderbolt 5 laptop will simply negotiate down to Thunderbolt 4 speeds when paired with a Thunderbolt 4 compatible device like this dock, so the mix of Thunderbolt generations quoted across TobenONE's pages reflects backward compatibility rather than a specification conflict.

  • Design: 3.5 / 5
TobenONE UDS060: Features
  • Limited Bandwidth
  • Programmable buttons
  • 100W charging

The port count reads well for the price. Two HDMI outputs support dual independent 4K displays at 60Hz on a Windows laptop with DP1.4 MST support, which is a genuinely useful spec for anyone running a two-monitor desk setup for coding, design or trading. Add a USB-C data port, a USB-A port, both rated to 5Gbps, Gigabit Ethernet, an SD and microSD card reader, and a 3.5mm audio jack, and the UDS060 covers most of what a desk-based professional needs from a single cable.

It’s worth noting that some features of this dock will work without a PSU connected, drawing power from the laptop instead, but obviously, that does put an additional load on the laptop battery.

The macOS support is more limited. Dual HDMI drops to a mirrored output only, with a single 4K@60Hz display being the practical ceiling on some models, since macOS does not support the multi-stream transport needed for two independent extended displays over this kind of dock. I’ll be honest and say I can’t personally confirm the Mac information, because I don’t own anything with an Apple logo on it. But based on my experience with other docks and their documented limitations, that information tracks.

On the host side, the UDS060 works over full-featured USB-C, USB4 and Thunderbolt 3/4/5 ports. A Thunderbolt 5 laptop will simply negotiate down to Thunderbolt 4 speeds when paired with a Thunderbolt 4 compatible device like this dock, so the mix of Thunderbolt generations quoted across TobenONE's pages reflects normal backward compatibility rather than a specification conflict.

Undoubtedly, the UDS060's headline feature is the dial and buttons. Four physical shortcut keys and a rotary knob, which can be rotated or pressed, are fully customisable through the free TobenONE app. TobenONE quotes 170 fixed combinations alongside fully custom assignments, covering basic keys, media controls, mouse functions and expanded or combination keys. Typical uses include locking the screen, taking a screenshot, controlling media playback, muting audio or launching an application.

(Image credit: Mark Pickavance)

Basic docking functions work without installing anything, so the shortcut keys are an optional extra rather than a requirement to get the dock working. The catch is that this customisation requires software to be installed if you don’t want to use the default settings.

A nice aspect of the customisation is that when you modify the settings, the changes are stored on the device. So, if you set one of the buttons to perform a screen capture, that will remain the same on any PC that you then connect the dock to.

According to others who have Apple gear, the mapping will even work if you plug this into an Apple iPad that has USB-C, incredibly. You can’t change the mapping on an iPad, because the applications for this are specifically for Windows and macOS, but once it's set from either of those, it will retain the keys the buttons generate across platforms, including iOS and Linux.

Up to 100W of USB-C Power Delivery passthrough is available, enough to charge most ultrabooks at or near their stock charger's output. TobenONE does not include a compatible charger in the box.

  • Features: 3 / 5

(Image credit: Mark Pickavance)TobenONE UDS060: Performance
  • 5Gbps connections

(Image credit: Mark Pickavance)

The performance of this dock is heavily affected by the core USB-C functionality, and attaching it to laptops with USB4 or Thunderbolt doesn’t significantly affect the available bandwidth.

The company notes that "basic docking functions are also supported on compatible macOS devices," but I didn’t test it with that.

What I tested it with was a USB4 connection on a laptop, and both USB4, USB-C, and USB-A external SSDs. The consensus was that these connected via USB 3.2 Gen 1 (5 Gbps) links, and the maximum performance I experienced was only 455 MB/s reads and 462 MB/s writes, even on drives rated for 1000 MB/s or better.

Copying from one drive to another halved that speed, depressingly.

From a technical standpoint, this is the biggest issue with this unit. For $16, UGREEN offers a USB-C hub that supports 10 Gbps, so why does this one only support 5 Gbps?

  • Performance: 2 / 5
TobenONE UDS060: Final verdict

(Image credit: Mark Pickavance)

There are things about this dock I genuinely love, and others that make it less than ideal.

Looking at the good things, the concept of a dock that also provides a customisable button and dial cluster is inspired. I just wish the dock were metal, so that it felt nicer to use than the plastic used here.

The port selection is fine, although it avoids bandwidth over subscription by offering only 5Gbps USB, making it invariably better to plug external storage into the host laptop than to attach it to the UDS060. I don't understand this choice; it seems silly.

Where this product isn’t good is that there is no PSU, forcing the purchaser to either use their laptop PSU or buy another one purely to use the dock. As the passthrough is 100W, that’s the maximum amount of power you can have recharging the laptop, even if it uses a 140W PSU. Most laptops will be fine, but it’s worth keeping in mind if you are considering this solution.

Overall, if you remove the customisable buttons, this is a low-end USB-C dock that costs more than it actually delivers. That’s a shame, because if it were USB 4, made of metal and could offer 10Gbps ports and a 2.5GbE LAN, then it would easily be worth twice what the asking price is currently.

TobenONE UDS060: Report card

Value

Inexpensive, but then this is only a USB-C dock

3.5 / 5

Design

Unique design, but mostly plastic

3.5 / 5

Features

Custom buttons, 100W charging, but no PSU

3 / 5

Performance

Only 5Gbps makes for poor external SSD speeds

2 / 5

Overall

Interesting multi-function design but poor USB performance

3.5 / 5

Should I buy a TobenONE UDS060?

(Image credit: Mark Pickavance)Buy it if...

You like the custom buttons
The custom buttons and dial on this design are a great feature, even if the hardware feels a little flimsy. Being able to retain the settings and move between devices is also helpful.

You are operating on a budget
This isn't an expensive dock, but there are even cheaper options if you lower your expectations.View Deal

Don't buy it if...

You want fast file transfers
With this Dock only connecting to the host computer at 5Gbps, most external SSDs attached to it will be running way below their quoted speeds. And, if you connect lots of devices, their individual slice of the bandwidth pie will only get smaller.

You need more than 100W charging
The maximum amount of power that the uplink port on this dock can deliver is 100W. If you need more than that, then you might need to connect a dedicated PSU to your laptop or find a more power-capable design.

Also consider

Plugable 10-in-1 USB-C Hub

A USB-C Dock with a much higher specification than the TobenOne. This hardware from Plugable has a 2.5GbE LAN port, 125W pass-through power, is made of metal and costs around $76. And, it has a USB 3.2 Gen 2 connection, double the bandwidth of the UDS060.

Check out our Plugable 10-in-1 USB-C Hub reviewView Deal

Categories: Reviews

The Onyx Boox Go 10.3 (Gen II) Lumi is a good Android-toting Kindle Scribe alternative, but it disappoints in a couple of key areas

Thu, 07/16/2026 - 01:52
Boox Go 10.3 Gen II Lumi: One-minute review

As far as epaper writing tablets go, Boox has some of the most versatile options thanks to their Android-based operating systems, and the Boox Go 10.3 (Gen II) Lumi is arguably the best of them despite its rather mouthful of a name — I’m just going to call it the ‘Lumi’ from here on in.

I was already a fan of the original model, calling the reMarkable dupe a pleasure to use in my Boox Go 10.3 review — and by just adding a light and making the battery consumption more efficient, the Chinese ereader maker has made the Gen II model better.

Despite the screen being a touch slower than I’ve experienced with other devices like the 2024 and 2025 Kindle Scribes, the light adds a lot of contrast to the screen, making it easier to read on, whether that’s an ebook or a handwritten note. Now, I have to mention that there is a Gen II without a frontlight as well but, in my opinion, having the screen lit up just makes the epaper writing tablet that much more usable in any situation. With a frontlight, it also becomes a true Kindle Scribe alternative — again, thanks to its Android-based OS that gives the user access to the Google Play Store.

However, the aforementioned slow display is a disappointment as every time I woke up the Lumi to read or write, there would be a couple of screen refreshes (clearly marked as ‘Rendering’ when directly waking up to the native library application) before it settled down. Page turns, though, are fine but, again, Amazon’s 2025 Kindle Scribes are just that little bit faster at this as well. Long story short, screen performance doesn’t seem to have improved over the Gen I Go 10.3.

While I can live with the slower screen, I can’t fathom why Boox would retire the stylus that came with the original Go 10.3 as it was a lot better than the supplied InkSense Plus pen. The new stylus isn’t as smooth to write with, and is heavier, detracting from the all-important writing experience.

So as much as I’d love to say the Lumi is an improvement over its predecessor — and it is in a couple of ways — it just seems like Boox has taken two steps forward (with the frontlight and battery life) but one step back with the stylus.

(Image credit: Sharmishta Sarkar / TechRadar)Boox Go 10.3 Gen II Lumi review: price & availability
  • Announced March 2026
  • List price: $449.99 / £429.99 / AU$729
  • Available directly from the Boox Shop and third-party retailers

With the addition of the frontlight, the price of the Boox Go 10.3 (Gen II) Lumi is a lot higher than the launch price of the original Go 10.3 — you’re looking at shelling out $449.99 / £429.99 / AU$729 for the former, which is about $70 / £50 / AU$120 more than what the latter was when it was released in 2024.

That’s quite steep, although considering how expensive every bit of tech is getting thanks to RAM shortages, I’m not really surprised. It’s still competitively priced considering the 3rd-generation Amazon Kindle Scribe (2025 release with frontlight) retails for $499 / £449.99 / AU$849 for the 32GB flavor, while you get double the storage with the Lumi. Throw in the versatility of Android and it’s arguably better value (even compared to any of the reMarkables), but given its overall performance and user experience compared to the competition, I’d be hesitant to recommend it.

If the frontlight isn’t important, you can opt for the Gen II version without it, which will set you back $419.99 / £399.99 / AU$689. Prices for both Boox Gen II devices include the InkSense Plus stylus and a magnetic sleep case.

• Value score: 4 / 5

(Image credit: Sharmishta Sarkar / TechRadar)Boox Go 10. Gen II Lumi review: specs

Display type:

Undisclosed E Ink Carta HD panel

Screen size:

10.3 inches

Resolution:

300ppi

Processor:

2GHz octa-core Qualcomm Snapdragon 690

Frontlight:

Yes (warm and cold)

Storage:

64GB (non-expandable)

Battery:

3,700mAh

Speaker:

Dual (stereo)

Water protection:

None

Software:

Android 15

Connectivity:

Wi-Fi (2.4GHz + 5GHz); Bluetooth 5.1 USB-C

File support:

20 document, 4 image, 2 audio

Dimensions:

235 x 183 x 4.8mm (9.3 x 7.2 x 0.19 inches)

Weight:

364g (without case and stylus)

Boox Go 10. Gen II Lumi review: design & display
  • Good-looking, lightweight epaper tablet, but clunky stylus
  • 10.3-inch E Ink display with good contrast
  • Textured rear panel adds good grip

With its eggshell-white body and metallic trim, I thought the first-gen Boox Go 10.3 was a pretty tablet, so I’m glad to see that the Gen II version hasn’t been changed — except for a slightly more textured rear panel that affords a little more grip, which is important for a slim device like the Go series slates. I should note here that both Gen II Go 10.3 tablets are identical physically but, without LEDs on the unlit version, it’s about 14g (0.5oz) lighter.

While the slimness doesn’t make for fantastic ergonomics, the Lumi weighing only 364g is, in fact, lighter than the Gen 1 model that tipped the scales at 375g without screen lights. It is about 0.2mm thicker than the previous Go 10.3, but that’s neither here nor there.

It’s still a beautiful device and, despite the thinness, there are dual speakers on either side of the USB-C port on the bottom edge, as does a mic. The only button is for power/sleep on the top edge. There’s no microSD tray here, though, for additional storage. One larger bezel allows plenty of room for your hand, although holding such a slim device, no matter how light, isn’t necessarily ergonomic. If you add in the sleep case, however, it just becomes heavier.

Sharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadar

I should talk about the case here, really quick — it’s a faux suede cover that unfortunately comes with the removable flap that I utterly detest. The brown suede material starts to lose its luster within days of use, so I can’t attest to its longevity, but I can’t fathom why Boox has to make the magnetic flap removable. This has been the case with the last few Boox devices I’ve tested and I find it rather annoying — the magnet is quite strong and the flap tends to entirely come away when you unfold it to close the case or secure the stylus to the side of the tablet.

(Image credit: Sharmishta Sarkar / TechRadar)

Speaking of which, the magnetic hold of the stylus is good but, as with nearly every such device, it’s not strong enough to keep the pen secure during travel, so you do need to depend on the case.

Boox has also changed the pen, now offering the InkSense Plus stylus that has a thicker tip that just isn’t as smooth as the previous stylus. It’s also slightly heavier than the older pen, which makes it feel clunky in the hand that, in my opinion, doesn’t lend itself well to controlled mark making on the screen. And as I’ve discussed elsewhere, the stylus can make or break the user experience for epaper tablets. Sadly Boox is moving away from using EMR support on its screens (just like reMarkable), so you can’t use a third-party pen on the Lumi.

Boox hasn’t revealed what E Ink screen technology it’s using here, but the 10.3-inch display isn’t bad, with a 300ppi resolution. It’s not as yellow (warm) as I’ve seen on other Boox devices and the frontlight’s incremental adjustments for both brightness and temperature are excellent, adding wonderful contrast to the text or writing on the screen that makes the Lumi a far better reading tablet than its predecessor.

• Design & display score: 4 / 5

(Image credit: Sharmishta Sarkar / TechRadar)Boox Go 10. Gen II Lumi review: Software
  • Runs a custom Android 15-based operating system
  • A relatively clean user interface, but it takes getting used to
  • Plenty of good native apps, but access to the Google Play Store makes it very versatile

Where the original Go 10.3 released in 2024 was using Android 12, the Lumi (and its cheaper sibling) have been upgraded to Android 15, although the software is a very trimmed-down custom version of Google’s operating system. You still get unfettered access to the Google Play Store, so you can, in theory, use any Android app, but e-ink tablets weren’t meant for streaming content or playing games on.

That said, nearly every Boox device comes pre-loaded with native apps that are quite good in their own right and have been improved over time as well, making them more streamlined than before. That’s not to say the UX is easy — if you’ve never used a Boox device before, it will take time to wrap your head around it all as there are still little adjustments that are hidden in sub menus.

What’s different with the Go series compared to other Boox tablets is the home screen navigation — the main menu is arranged vertically on the left, with the Library being your default view. You can change the main menu items in Settings, though, either adding or removing applications.

Customizing the user experience has never been Boox’s problem, which means you can choose between several options for System Display or Gestures, and even tweak individual native apps as you see fit — even the NaviBall is optional to use and can be configured to trigger a plethora of functions.

(Image credit: Sharmishta Sarkar / TechRadar)

The Control Center hasn’t changed much over the last couple of years, but I’m still not sure access to an AI assistant is necessary on an e-ink device, but perhaps some power users would appreciate it.

As always, you can sign into a fair few cloud services, including Google Drive and Dropbox, get full support for EverNote and OneNote, or download any other productivity application you might need, but keep in mind that not all third-party apps will be optimized for this device.

One of the things I really like about Boox’s premium note-taking tablets is OTG (on the go) support. This means I can plug in an external hard drive or portable SSD directly into the USB-C port to transfer files. In fact, it’s what I predominantly use even though BooxDrop is a handy app for cloud transfer. I don’t even bother signing into my Google Drive account on a Boox these days.

There really isn’t very much to complain about from a software standpoint — it’s the writing experience that takes a tumble here.

• Software score: 4.5 / 5

(Image credit: Sharmishta Sarkar / TechRadar)Boox Go 10. Gen II Lumi review: User experience
  • Good screen contrast with lights makes for a lovely reading experience
  • The supplied pen, however, isn’t as nice as the older version for writing

A device might look lovely and come with the nicest software, but ultimately its user experience determines its value. And that’s the case with the Go 10.3 Gen II Lumi — it does a lot right, like its reading experience is lovely, but its main functionality of writing is a little bit of a letdown.

Reading

Like I said, reading on the Lumi is lovely — the frontlight makes the text stand out, adding contrast where previously, on the Gen 1, it was disappointing. Page turns are quick enough too with the screen quite responsive to taps and gestures.

And yet I feel it’s a little slow for an epaper tablet that was released in 2026. For example, every time I woke up the Lumi during my months-long testing, it took a while to ‘render’ an ebook from its native library app.

Sharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadar

It very much seemed like it was refreshing the app twice before finally rendering the page. On the other hand, the 3rd-generation Kindle Scribe released in 2025 takes a second or two to open but doesn’t flicker or ‘refresh’ the page — it’s a lot smoother on waking up. As are the Kobo Libra Colour and Kindle Paperwhite from 2024.

Boox doesn’t reveal what E Ink screen tech its using, but other than its slight slowness on waking up, I can’t complain about the reading experience. All books and images rendered on screen have been sharp and clear, particularly with the frontlight on.

Writing

The same kind of contrast with the frontlight on is available on the Notes app too where handwriting looks sharp and clear on screen. However, the physical act of writing on the Lumi isn’t as good as it has been on the Gen 1 because Boox decided to change the stylus.

The previous pen had a thinner nib that moved over the screen quite well. The new InkSense Plus stylus is heavier and the slightly thicker tip feels like it needs to be dragged to make a mark — it feels clunkier in comparison.

Boox has also stepped away from using EMR screens, which means you can’t swap that pen out for another. I tried using one of Boox’s own older pens (used to be supplied with the Note series) and it didn’t work. That’s a real shame as writing is the Lumi’s principal function and the experience of doing so is disappointing.

Sharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadar

The native Notes application, though, is full featured — in fact, for the average user it’s probably overkill — and would be ideal for students, teachers and researchers.

• User experience score: 3.5 / 5

Boox Go 10. Gen II Lumi review: Performance
  • Generally good performance except on waking up
  • A lot of ghosting visible, especially in the Notes app
  • Exceptional battery life for an Android device

The Lumi's overall performance is a mixed bag. While it uses a better chipset (Qualcomm Snapdragon 690) compared to the original Go 10.3 (Snapdragon 680), it hasn't really made much of a dent in the speed with which the Lumi performs the tasks at hand.

That's not a complaint — it's an observation. However, Amazon's newest Kindle Scribes are just that much faster at things, like page turns are so quick they barely register that they've moved and the lag between pen input and the mark on screen is barely discernible. On both counts the Lumi is just that smidgeon slower that you can notice if you use it side by side with the 2025 Kindle Scribe (3rd generation).

The slow waking up of the screen is also something that has bothered me, and I've already mentioned how disappointing the writing experience is, but I'm also surprised at how much ghosting there still is on Boox devices, including the Lumi, something Amazon has managed to completely eliminate on its Kindles. You'll be able to notice the ghosting on nearly every single image I have in this review (including in the gallery below).

Sharmishta Sarkar / TechRadarSharmishta Sarkar / TechRadar

Where the Lumi really shines (pardon the pun) is with battery life. It still uses the same 3,700mAh battery pack that was in the Gen 1 model and yet whatever software adjustments Boox has made has pushed battery life to weeks rather than days. It's the first Android digital notebook I've used to have such an impressive battery life, one that can match the Kindle Scribes, albeit dependent on use.

In my case, an hour of reading and 30 minutes of writing per day gave me 17 days of use with frontlight at medium brighness and a similar warmth setting, plus Wi-Fi on at all times (but not Bluetooth). Using cloud services and didn't make any dent on the battery usage, although excessive online browsing did drain a little extra but not by all that much.

Topping up was average, with the 3,700mAh pack going from 19% to full in just under two hours when plugged into a wall charger via a high-quality USB-C cable.

• Performance score: 3.5 / 5

(Image credit: Sharmishta Sarkar / TechRadar)Should I buy the Onyx Boox Go 10.3 (Gen II) Lumi

Attribute

Notes

Score

Value

It's cheaper than the 3rd-gen Kindle Scribe, but you'll get better performance elsewhere

4 / 5

Design & display

It's a beautiful device with reMarkable 2 vibes, and a frontlight makes a world of difference. However, the display just seems to lack the oomph factor I've seen in newer epaper tablets.

4 / 5

Software & apps

With an Android-based software allowing for versatility, and a nicer user interface than previous Boox UIs, it's hard to fault the Lumi. It's not perfect, but it ain't bad.

4 / 5

Writing & productivity

It's fantastic to read on, with brilliant contrast when the light is on, but the supplied pen is a major letdown when it comes to writing.

3.5 / 5

Reading

Without a frontlight, it's not the ideal ereader

3.5 / 5

Performance

On its own, the Lumi performs well for most users, but it's hard to give it full praise when there are faster E Ink displays being used on competitive digital notebooks, but the battery life is the best for an Android epaper tablet.

3.5 / 5

Buy it if...

You want a thin, light digital notebook with frontlight

There are more epaper writing tablets without a frontlight now than with, and trust me when I saw that can make a difference to usability, especially at nighttime and in bright sunlight.

You want the versatility of the Google Play Store on your digital notebook

It's not the only Android-toting epaper writing tablet, but it's well priced compared to some of the competition.

Don't buy it if...

You'll be doing a lot more writing than reading

The Lumi's main function is as a writing tablet and, given the disappointing stylus supplied with it, it's hard to recommend when there are competitors offering a better experience.

You want the best performance out of your digital notebook

It's not that the Lumi is bad; it's just that there are better options out there that have more responsive screens with next-to-no ghosting.

You need plenty of storage

64GB is a very good amount of storage that you'll get on the Lumi, but power users with large files saved on the device might need more, and there's no microSD card tray here. For that, I'd recommend Boox's Note series over the Go.

Also consider

I like the Lumi, but I don't I love it. If, like me, you'd be keen to check out other options, the two below are the ones I'd recommend, both of which are cheaper but aren't Android based.

Amazon Kindle Scribe (2nd gen)

It might have been succeeded by the 3rd-gen Scribe that's bigger and better, but it's still available to buy and still makes for an excellent e-ink writing tablet with a lovely screen and, importantly, regularly discounted now since it's an older model.
Read our full Amazon Kindle Scribe (2024) review for more details

reMarkable Paper Pure

It's not as full featured as an Android-based epaper writing tablet, but this reMarkable offers you a distraction-free slate to unleash your creativity. It's essentially the reMarkable 2 in a new body with 32GB of storage.
Read our in-depth reMarkable Paper Pure review to learn more

How I tested the Onyx Boox Go 10.3 (Gen II) Lumi

(Image credit: Sharmishta Sarkar / TechRadar)

I've tested a range of ereaders and epaper writing tablets for TechRadar, so I'm well suited to compare the Boox Go 10.3 (Gen II) Lumi with its competitors.

As with all such devices I've previously tested, the first thing I did with the Lumi was to sign into the Google Play Store and down the Kindle and Kobo apps. I then used OTG support to transfer ebooks to the device directly from a portable SSD via the USB-C port, but I also used BooxDrop and cloud transfer from Google Drive to test various services.

The Lumi then became my daily ereader and note taker for 4 weeks, using it an average of 2-3 hours a day to read and write. I'm not an artist, so drawing was out of the question.

Out of curiosity, I also downloaded Geekbench 6 to benchmark the CPU (the app is available on the Play Store). I sideloaded a few MP3 files to test the onboard speakers.

Read more about how we test

[First published July 2026]

Categories: Reviews

Pages