Error message

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

Reviews

New forum topics

Lenovo’s new Yoga might be the thinnest laptop I’ve ever tested — but there’s one spec that impressed me even more

TechRadar Reviews - Tue, 07/21/2026 - 04:51
Lenovo Yoga Slim 7x Gen 11: Two-minute review

The Lenovo Yoga Slim 7x Gen 11 is an ultra-thin laptop with a strong spec that makes it more than capable for workday use.

It looks smart, thanks to its minimalist form. All sides are flat, and the Cosmic Blue colorway is subtle yet helps to distinguish it in this largely monochromatic sector.

The build quality is excellent. The body is as premium as it comes, feeling very solid but also light and smooth to the touch. In fact, it could probably lay claim to having one of the best laptop constructions around right now. Allied to that lightness is its thinness, which is quite remarkable, although the thick rear foot underneath somewhat negates this aspect, which is a shame. What’s more, these truncated dimensions mean that you get three ports, all of which are USB-C.

(Image credit: Future)

With the new Snapdragon X2 Elite chip equipped, the Yoga Slim 7x Gen 11 is a capable all-round performer. It handles multiple browser tabs and 4K streaming with ease, as well as basic productivity. While it's not necessarily aimed at gamers and lacks a dedicated GPU, it's even capable of some light gaming; it managed to run Cyberpunk 2077 in a playable state, although don't expect top-tier performance. Heat and fan noise are generated when such workloads are conducted, but neither is too disruptive.

Another advantage of the X2 Elite chip is the improved efficiency. This is evident in the battery life of the Yoga Slim 7x Gen 11, which is one of its most impressive aspects. It lasted close to a full day when I ran a movie on a continuous loop, which ranks among the best in class. It’s also quick to charge, taking about two hours to do so.

The 2.8K display in my review unit was sharp, bright, and vivid, although it was prone to showing reflections at times. For the most part, though, these were only apparent in the most unfavorable of lighting conditions.

The keyboard is fairly easy to use, thanks to the ergonomic keycaps and their spacing. However, presses are a little heavier than you might expect, so this can take some getting used to if you’ve come from a board that requires a light touch. The touchpad is large and smooth, which makes for easy navigation, while taps and clicks are responsive and provide good feedback.

The Yoga Slim 7x Gen 11 commands a reasonably high price tag, but considering its spec and quality, it makes for good value compared to some of its less premium-feeling rivals. It might lack the ports and graphical performance of other laptops, but it’s a fine choice if portability and build quality are among your top priorities.

Lenovo Yoga Slim 7x Gen 11 review: Price & availability

(Image credit: Future)
  • Starts from $999.99 / £945 / AU$1,999
  • Available now in one colorway
  • Reasonably expensive for the spec

The Yoga Slim 7x Gen 11 starts from $999.99 / £945 / AU$1,999 and is available now in one color: Cosmic Blue. This base spec features a Snapdragon X2 Plus X2P-42-100, 16GB of RAM, 512GB of storage, and WUXGA display. This isn't exactly cheap, and costs escalate quickly as you move up the model range. The top-spec unit, which features 32GB of RAM, 1TB of storage, and a 2.8K display, costs $2,299.99 (about £1,700 / AU$3,300).

If you’re looking for another thin and light laptop, then the HP OmniBook 7 is a very strong alternative. I was very impressed with its performance when I reviewed it, and its only missteps are the port placements and slightly harsh keyboard. It's base model is slightly cheaper than the Yoga Slim 7x Gen 11's in the US, and significantly so in the UK.

There’s also the Asus Zenbook A14, which is incredibly thin and light, and has one of the best battery lifespans around. However, it lacks the build quality and display brightness of the Yoga Slim 7x Gen 11, yet it’s significantly more expensive when comparing like-for-like models.

  • Value score: 4 / 5
Lenovo Yoga Slim 7x Gen 11 review: Specs

Base spec

Max spec

Price

$999.99 / £945 / AU$1,999

$2,299.99 (about £1,700 / AU$3,300)

CPU

Snapdragon X2 Plus X2P-42-100 Processor (4.04 GHz)

Snapdragon X2 Elite X2E-80-100 Processor (4.70 GHz)

Graphics

Integrated

Integrated

RAM

16GB LPDDR5X

32GB LPDDR5X

Display

14-inch WUXGA (1920 x 1200), OLED, Glare, HDR 500 True Black, 100% DCI-P3, 400 nits, 60Hz

14-inch 2.8K WQXGA+ (2880 x 1800), OLED, Glare, HDR 1000 True Black, 100% DCI-P3, 500 nits, PureSight Pro, 120Hz

Storage

512GB SSD M.2 PCIe Gen4

1TB SSD M.2 PCIe Gen4

Ports and Connectivity

3x USB-C (USB4 40Gbps); Wi-Fi 7, Bluetooth 5.4

3x USB-C (USB4 40Gbps); Wi-Fi 7, Bluetooth 5.4

Battery

70Wh

70Wh

Weight

2.6lbs (1.2kg)

2.6lbs (1.2kg)

Dimensions

12.3 x 8.7 x 0.6 inches / 312 x 221 x 14mm

12.3 x 8.7 x 0.6 inches / 312 x 221 x 14mm

Lenovo Yoga Slim 7x Gen 11 review: Design

(Image credit: Future)
  • Extremely thin
  • Premium materials
  • Lacks ports

The minimalist design of the Yoga Slim 7x Gen 11 is appealing, while the dark Cosmic Blue colorway rescues the unit from looking dull. The rounded sides and corners help to soften its appearance. Most sides are flat, with no extraneous bulges, save for the central camera bezel that extends beyond the rest of the lid. However, the overhang this creates actually helps you to open the lid, which is a thoughtful touch.

The body is one of the best I’ve seen in a laptop. It looks and feels premium, rivaling what the best MacBooks have to offer. It’s incredibly smooth and seems very durable. There’s some flex to the base and the lid, but they’re remarkably solid when you consider just how light the whole unit is. The lid is also very stable when open, and adjustments are smooth and easy to make.

(Image credit: Future)

Just as impressive is the thinness of the Yoga Slim 7x Gen 11. It’s certainly one of the thinnest 14-inch laptops I’ve seen, although it’s a shame the bulky bar underneath, which acts as the rear foot, somewhat undermines this aspect. This is no doubt to improve airflow from the underside vent, which is more exposed than many others.

To achieve this thinness, port selection has been compromised. There are only three ports, all of which are USB-C, which means you’ll need plenty of adapters (or a hub) if you’re going to be connecting lots of peripherals. The saving grace is that all ports have 40Gbps transfer rates, support the Power Delivery standard, and can be used to charge the laptop itself. They’re also split across both sides of the unit, which improves practicality.

On the right you’ll also find the power button and a button for disabling the webcam, which might disappoint those hoping for a physical privacy shutter.

  • Design score: 4 / 5
Lenovo Yoga Slim 7x Gen 11 review: Performance

(Image credit: Future)
  • Capable everyday performance
  • Light gaming possible
  • Keys are a little heavy
Lenovo Yoga Slim 7x Gen 11 benchmarks

3DMark: Night Raid: 40,637; Fire Strike: 7,911; Steel Nomad: 1,051; Solar Bay: 21,754; Solar Bay Unlimited: 22,518; Solar Bay Extreme: 2,491; Solar Bay Extreme Unlimited: 2,526
Geekbench 6.5: Multicore: 20,362; Single-core: 3,815
Cinebench R23: Multi Core: 13,071; Cinebench R24: Single Core: 90; Multi Core: 723
Crossmark: Overall: 1,896; Productivity: 1,703; Creativity: 2,171; Responsiveness: 1,742
Passmark Overall: 7,821.2; CPU: 30,341.4; 2D Graphics: 594.2; 3D Graphics: 6,632.9; Memory: 3,429.5; Disk: 51,620.7
BlackMagicDisk: Read: 5,214MB/s; Write: 4,947MB/s
HandBrake 4K to 1080p: 63.68fps
Total War: Warhammer III: 1080p, Medium: 43fps
Total War: Warhammer III: 1800p, Ultra: 11fps
Battery Life (TechRadar movie test): 23 hours and 30 minutes

For everyday use, the Yoga Slim 7x Gen 11 is certainly fast enough. It handled many of the tasks I threw at it with aplomb, from basic productivity to 4K streaming. With the 32GB of RAM in my unit, it also handled multi-tab web browsing with ease.

No doubt a lot of this performance comes from the new Snapdragon X2 Elite chip inside the Yoga Slim 7x Gen 11. Qualcomm claims this chip is a stronger performer than Intel equivalents, and based on our testing this appears to be true. For instance, it beat the Geekbench Single Core benchmark score of the HP OmniBook 7, with its Intel Core 5 220H, by over a thousand points, and doubled its Multi Core score.

When it comes to gaming, the Yoga Slim 7x Gen 11 was less competent, but that's hardly a surprise — it's not really aimed at wooing gamers, given it doesn’t have a dedicated GPU. However, I still managed to run Cyberpunk 2077 in a playable state, albeit with ray tracing disabled and resolution scaling set to Balanced. It wasn’t exactly a smooth experience, so it's not likely to be for you if you're in the market for a dedicated gaming laptop, but if you want a productivity powerhouse with just a little casual gaming on the side, it should suffice.

As expected, the fans can be heard whirring away in such cases, but the noise isn’t too disruptive. Heat is also generated, and temperatures can get quite high in places, although thankfully these hotspots are confined to the top and underside of the base.

(Image credit: Future)

The display in my review unit was crisp, thanks to its 2880 x 1800 resolution, and the high levels of brightness ensure content is viewable in most conditions. There were times when reflections showed on screen, but only when the lighting in my environment was particularly unsuitable.

The keys in the Yoga Slim 7x Gen 11 adopt Lenovo’s trademark shape, which are very ergonomic. The generous spacing between them also makes for a forgiving typing experience. However, they’re a little heavier and travel further than you might expect, which might throw off those who prefer a light and snappy response. The touchpad is suitably large and incredibly smooth, making it conducive to cursor navigation. Taps are responsive without being overly sensitive, and clicks are easy to perform and provide plenty of feedback.

  • Performance score: 4 / 5
Lenovo Yoga Slim 7x Gen 11 review: Battery life

(Image credit: Future)

The battery life of the Yoga Slim 7x Gen 11 is very impressive. No doubt that aforementioned new Snapdragon chip plays a major part here, due to its improved efficiency. It managed to last just under 24 hours in our movie playback test, putting it ahead of many other laptops in this sector. This may be partly due to that aforementioned chipset, which Snapdragon claims brings improved efficiency. Charging is a quick affair, too, as it took about two hours to fully replenish.

However, there are those that can match and even outlast it, such as the HP OmniBook 7, which managed 26 hours in the same test. And then there’s the Asus Zenbook A14, which managed a staggering 28 hours and 25 minutes.

  • Battery life score: 4.5 / 5
Should I buy the Lenovo Yoga Slim 7x Gen 11?Scorecard

Attributes

Notes

Rating

Value

It seems expensive, but when you consider its design and spec, it’s reasonable.

4 / 5

Design

I couldn’t help but marvel at its thin and premium design. The port selection is disappointing, though.

4 / 5

Performance

Great for everyday tasks, and it can even handle light gaming. The display is vivid if a little reflective, and it can get hot under load.

4 / 5

Battery life

Among the best in class, it really can last a full day. It’s quick to charge, too.

4.5 / 5

Total Score

The Yoga Slim 7x Gen 11 is great if you need a thin yet powerful Windows machine that lasts all day unplugged. A few areas are less impressive, but it’s still a good value proposition.

4 / 5

Buy it if…

You want one of the thinnest laptops around
That bulky foot underneath might spoil things a little, but the Yoga Slim 7x Gen 11 is still incredibly thin.

You want a premium design
It looks premium, and the body feels exquisite and hardwearing. It’s also quite light.

Don't buy it if…

You want lots of ports
There are only three ports on board, and all are USB-C, so you'll need a hub if you have lots of connections to make.

You want light keys
Although they’re comfortable to use, the keys on the Yoga Slim 7x Gen 11 are a little heavier than on many other laptops, which might take some getting used to.

Lenovo Yoga Slim 7x Gen 11 review: Also consider

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

Asus Zenbook A14
Another portable hero, the A14 is even lighter than the Yoga Slim 7x Gen 11. However, its battery life is even better; in fact, it’s the most enduring laptop I’ve ever tested, lasting a staggering 28 hours in our movie playback test. Its build isn’t as premium as the Yoga Slim 7x Gen 11’s, and its display isn’t as bright, but it’s still a capable machine. Read our full Asus Zenbook A14 review.

(Image credit: Future)How I tested the Lenovo Yoga Slim 7x Gen 11
  • Tested for several days
  • Used for a variety of tasks
  • Plentiful laptop experience

I tested the Yoga Slim 7x Gen 11 for several days, during which time I used it for a variety of tasks, from productivity and browsing to streaming and gaming.

I also ran our series of benchmark tests, designed to assess every aspect of a laptop's performance. I also ran a movie on a continuous loop to test the battery life.

I've been using laptops for decades, and have reviewed a large number of them, from small budget models to large gaming machines.

Categories: Reviews

Adobe Firefly AI video editor review

TechRadar Reviews - Tue, 07/21/2026 - 01:10

Adobe is a popular brand when it comes to all things creative, including AI content generation and editing. With its newly improved Firefly tool, Adobe has taken AI content generation a step further with realistic, real-time outputs.

In addition to being highly accurate, Firefly is also one of the most affordable tools on the market today. But is it the best AI video editor for your needs? Read on to find out. In this article, we've put Firefly to the test, examining its features, pricing, ease of use, and overall value for money.

Adobe Firefly: Plans and pricing

Adobe Firefly is available online by clicking here, as well as part of the Creative Cloud suite of apps.

It offers one of the most generous free video editing software we've seen. Instead of capping your monthly or one-time usage, Adobe allows you to generate a limited number of images and videos each day. This means you can continue using Firefly for a longer period, provided you stay within the daily limits.

What we like about the free plan is that Firefly does not lock its image or video editing features behind paywalls. Even on the free plan, you get access to features such as Generative Fill, Background Removal, AI Markup, video upscaling, text-based editing, as well as audio features such as generating soundtracks, speech, text-to-avatar, and more. Unlike other platforms, Firefly's free plan can actually come in handy for limited individual use.

(Image credit: Adobe Firefly)

Its paid plans are also among the most inexpensive we've seen in the category, with the Standard plan starting at $8.49 per month when billed annually, which comes with 2,000 credits.

With this plan, you get access to all the AI models Firefly has to offer, with hard upper limits on the number of images and videos you can generate with each model. Videos, however, are capped at a maximum duration of five seconds, which might not be enough for users looking to generate long-form content. Besides this, you get access to unlimited Firefly Boards, while the remaining features stay the same as those in the free plan.

Next is the Pro plan at $16.99 per month (4,000 credits), billed annually, where you get unlimited access to several AI models such as Gemini 2.5 Flash, FLUX.1 Kontext, and others. The maximum number of images and videos you can generate is also higher than in the Standard plan.

Then there's the Pro Plus plan, priced at $29.38 per month, where you get up to 10,000 credits and higher limits on image and video generation. In this plan, a wider range of models comes with unlimited access, including Gemini 3.0, ChatGPT Image, Runway Gen-4.5, and Gemini 3 Nano Banana Pro 2K.

Finally, there's the Premium plan at $118.93 per month, offering 50,000 credits and unlimited access to almost all AI models except a few. This plan is ideal for large content creation and creative teams.

Adobe Firefly: Features

Right off the bat, what impressed us most about Firefly is its brainstorming and early-stage concepting feature called Firefly Boards. It is essentially an infinite-canvas mood board and ideation workspace that lets you upload your own images, sketches, or stock images, or generate new ones.

You can select multiple assets and combine elements while brainstorming ideas with your creative team. This is similar to Midjourney- or Discord-style iteration, giving remote creative teams a space to flesh out new ideas.

(Image credit: Adobe Firefly)

Moreover, Firefly offers access to more than 10 popular video, audio, and image models, each with its own limits on the amount of content you can generate. Some notable features are Generative Expand and Generative Fill, which let you expand the canvas of an image or video after it has been generated using Adobe's AI engine. Similarly, there's also Generative Remove, which helps you remove elements from a piece of content.

Firefly also throws in a range of audio features, such as the ability to generate speech, translate videos from one language to another, or add text-to-sound effects to your content. However, we were a bit disappointed with its video editing features, such as trimming, arranging, and refining content, all of which are still in beta. Its AI assistant is also at a very early stage and currently supports only one conversation at a time.

You also have the option to upload an image to provide Firefly with a style or structure reference and create a consistent look across a batch of images. Unlike many other AI tools, Firefly allows you to use your own images to train its AI models and create custom models. This is still an early-stage feature, and we expect it to improve over the next year or so.

Firefly has also expanded its multilingual reach and now supports prompts in more than 100 languages, along with translations in more than 20 languages. There's also an option for bulk actions such as background removal, color grading, and cropping.

Its mobile apps have also improved a lot over the past year and now offer native iOS and Android apps with an experience that's very close to the web interface. And of course, Firefly is part of Adobe's broader AI-powered content generation and editing ecosystem, integrating directly with apps like Photoshop and Illustrator.

Adobe Firefly: Interface and in use

Adobe Firefly is by far one of the most improved image and video editing software we have seen in a long time. One of the biggest criticisms of Firefly was that it did not offer any option to edit the images it generated. However, all that has changed with its revamped user interface.

Not only did it generate a pretty high-quality image for us, but it also provided several editing options. We especially liked its Tune feature, which is currently in beta and allows you to change the look of an image by selecting from a list of preconfigured options.

There is also a prompt option, which lets you keep fine-tuning your generated image with follow-up prompts.

(Image credit: Future)

However, if that is too much work, there are several fine-grained controls available. For instance, there is a Fill feature that lets you fill any blank spaces in the image with an element of your choice. Similarly, there's the Remove feature, which lets you remove any element you do not want in the final result.

What we liked the most is its Select feature, where you can select a particular element in an image or video and then type a prompt to edit only that selected portion. This helps avoid unwanted changes in other parts of the image or video and ensures that the edit is applied only to the section you selected.

(Image credit: Future)

The generation interface itself is pretty simple. You'll see a prompt box at the bottom of your screen, along with a panel on the left-hand side where you can control the generation settings.

For instance, you can select the model you want to use, the resolution, the aspect ratio (16:9 or 9:16), and the duration of the video. There is also an advanced setting where you can enter a random seed value to experiment with the AI engine settings.

What we found particularly eye-catching is the prompt enhancement feature, which lets you improve your prompts before generating an image or video. This helps you create more detailed prompts, which in turn result in more accurate outputs.

Adobe Firefly: How we tested

We tried the free version of Adobe Firefly over several days and were quite impressed with the results. We first tried to create an AI image with the following prompt:

"A tired line cook in a stained white apron, frowning with exhaustion, wiping sweat off his forehead while chopping six carrots on a wooden cutting board. Behind him, a dim, cluttered restaurant kitchen with steam rising from a pot. Photorealistic, dramatic low lighting, shot on 35mm film."

As soon as we hit Generate, Firefly got to work and produced a pretty impressive image that closely matched our prompt.

(Image credit: Future)

However, it's worth noting that Firefly is a tad slower compared to the likes of Fliki or Kapwing. That said, the accuracy of the results is worth the wait.

Once the image was generated, we clicked on it to open the editing panel and played around with the settings. For instance, we selected the burning steel pot behind the cook and prompted Firefly to change it to a wooden pot instead.

Rather than simply making the change, Adobe gave us an Edit Strength slider, allowing us to control how strongly the wooden effect was applied to the pot.

(Image credit: Future)

We then tried the Remove feature by selecting a bunch of carrots and asking Firefly to remove them. Adobe once again impressed us, as it accurately removed the carrots without distorting the chopping board around them.

(Image credit: Future)

Lastly, we used the Upscale feature to improve the quality of the image. This took the longest, more time than it took to generate the image in the first place. However, we were once again very satisfied with the final result.

We also generated 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)

The results were again highly accurate, the colors were vibrant, and we were impressed by how closely Firefly followed the prompt without significantly diverging from the intended output.

Adobe Firefly: Alternatives

Although Adobe Firefly is a much-improved product, it does have a few shortcomings, which is why you may want to consider some alternatives. For instance, Adobe isn't the best choice if you want to generate AI avatars. Although it offers the feature in a limited capacity, the results are not what you'd expect from a dedicated AI avatar generation tool.

In that case, you can try Kapwing, which offers one of the most extensive collections of AI avatars. You can choose from a wide range of characters, including traditional human-inspired faces and more outlandish options such as aliens, Cupid, demons, cyborgs, Dracula, and more.

Kapwing produces some of the best photorealistic AI avatars we have seen in the industry. It is also one of the few tools that can render videos in 4K quality. That said, it is a bit on the expensive side, with plans starting at $16 per month.

If you need a dedicated AI assistant to help with content generation and editing, you can try Fliki, which offers an AI Copilot that understands natural language inputs and helps you achieve your desired results more effortlessly. It also includes licensed YouTube music and advanced video generation options such as stop-motion videos.

Fliki also offers a wider range of customization options compared to Adobe Firefly, such as choosing the format and template, customizing the type of character, selecting the AI model you want to use, and adding voiceovers, captions, and AI avatars.

Adobe Firefly: Final verdict

Adobe Firefly is one of the best-known names in the content creation industry, and its recent improvements put it right at the top of our list of the best AI video editors. Firefly offers more than 10 AI models for image, video, and audio generation, helping you create photorealistic images, videos, and audio with simple prompts.

We were particularly impressed by Firefly Boards, which helps you brainstorm ideas on an endless online canvas in real time while collaborating with your content team. Firefly has also improved its editing interface and tools and now supports follow-up prompt editing, along with features like Generative Fill and Generative Remove.

That said, it has a few drawbacks, such as the lack of mature video editing tools, which are still in beta, and rather limited AI avatar generation capabilities. That said, if you already use Adobe tools like Illustrator or Photoshop, adding Firefly to your repertoire is a no-brainer.

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 swapped my mechanical keyboard for Turtle Beach’s new Hall effect, touchscreen-equipped TKL model — and its smooth typing and high customizability made me never want to go back

TechRadar Reviews - Mon, 07/20/2026 - 19:00
Turtle Beach Command Series KB7: one-minute review

Want a high-performing gaming keyboard with an integrated touchscreen for streaming and seamless customization? Then the Turtle Beach Command Series KB7 could be exactly what you’re looking for.

I replaced my usual mechanical keyboard with this TKL model for a few days, and instantly found it to be a joy to use. The low-profile Hall effect switches supply precise, responsive, and buttery smooth typing, with a muted sound that’s great for focusing in-game or for general day-to-day productivity. It's less ‘clicky’ and snappy than some may like, but the lowkey sound and feel was ideal for me.

Like a lot of the best gaming keyboards, there’s also 8K polling, alongside 0.125 latency for instant response typing. On top of this, you get important features like Rapid Trigger, adjustable actuation and remappable keys.

The true highlight, though, is the integrated 4.3-inch touchscreen. This has built-in controls for streamers, providing quick access to OBS and StreamLabs, but also has shortcuts for apps like Spotify and Steam among others. I appreciated how you could use the screen to view PC performance, in-game stats, or set web page bookmarks. You can also use the touchscreen as a numpad, and it feels highly responsive in use.

I also really like the design of the KB7. Its slim aluminum chassis, tactical media control knob, customizable RGB lighting, and generally high standard of build help it to feel worth its relatively high asking price.

There’s no battery option if you want to use the keyboard wirelessly, largely due to the power required to keep the touchscreen going, but those focused on optimized performance will want to go for a wired option anyway. And all things considered, I think the Turtle Beach KB7 is a fantastic gaming keyboard, and one I just might have to continue using for all my PC gaming needs.

(Image credit: Future)Turtle Beach Command Series KB7 review: price & availability
  • $199.99 / £189.99 / AU$349
  • Released in May 2026
  • Arrived alongside Turtle Beach’s KB5 keyboard

The Turtle Beach Command Series KB7 was released in May 2026 alongside the Command Series KB5 — a full-sized keyboard with a smaller touchscreen and mechanical switches.

Unsurprisingly, then the KB7 is pricier than its sibling, and has a list price of $199.99 / £189.99 / AU$349. It goes without saying that it’s undoubtedly a pricey keyboard, but for a TKL with this much tech, it’s not too far from the competition. For instance, the Corsair K70 Pro TKL, which comes without a touchscreen, will typically set you back about $179.99 / £169.99 / AU$239.

Turtle Beach Command Series KB7 review: specs

Layout

TKL

Switch

Titan Low-Profile Hall Effect

Programmable keys

Yes

Dimensions

15.7 x 10.1 x 1.2 inches / 399 x 256 x 31mm (with palm rest)

RGB or backlighting

Yes (customizable)

(Image credit: Future)Turtle Beach Command Series KB7 review: design & features
  • Great standard of build
  • Touchscreen with streaming controls
  • Customizable lighting

First things first, I have to say that the build and quality of the KB7 impressed me. It has a slim aluminum chassis, stylish and sleek look, and premium-feeling keycaps. The keyboard also has a modular design, meaning you can add on the Turtle Beach KP7 keypad as well as the included wrist rest.

And I found said wrist rest to be a great addition — it’s comfortable, well-made, and ensured that using the keyboard for extended periods still felt comfortable. The only real downside is that it increases the keyboard’s footprint a fair bit, so you’ll need a decent-sized desk if you’ve also got a PC / laptop hooked up to a couple of monitors like I do. It’s also worth noting that the KB7 has a double kickstand, and this also helped to reduce fatigue after furiously typing for multiple work days in a row.

The keyboard also features customizable per-key RGB lighting with Turtle Beach’s Swarm II software, accessible via the built-in touchscreen. In my view, the lighting looks great, especially in low-lit conditions. I also really like how there’s an option to create dynamic effects and sync your lighting setup across multiple devices.

(Image credit: Future)

I touched on it a moment ago, but the stand-out feature of the KB7 is the built-in touchscreen. The real highlight here is that the touchscreen features streaming controls. You can easily access OBS and StreamLabs with a single button touch. It’s a useful inclusion, but if you’re not a streamer, there are options for you too. For instance, you can use the touchscreen to set shortcuts for apps like Steam and Spotify, or for websites you frequently visit — you know, like TechRadar.

What’s more, the Swarm II software enables you to personalize aspects like Rapid Trigger and actuation settings or remap keys. You can actually alter the actuation of every key individually, and while I don’t expect most users will need that level of granular control, the sheer degree of customization is undoubtedly impressive.

Finally, there are a few useful buttons, for things like skipping and rewinding media and muting your mic. I also love the tactile control wheel for adjusting volume, although there’s also a dedicated volume mixer available on the touchscreen.

(Image credit: Future)Turtle Beach Command Series KB7 review: performance
  • Fantastic typing experience
  • Although lighter, more muted feel won’t suit all
  • Great for gaming or general productivity

I typically use a mechanical Keychron mini keyboard, and so moving over to the KB7 felt like quite the jump.

Why? Well, it comes down to how typing feels on this TKL keyboard. The low-profiled Hall effect keys feel phenomenally smooth and buttery to press down on, and they produce very little noise. The more muted sound and feel was very different from my usual mechanical keyboard — which has more of a clicky, snappy profile. I much preferred the KB7 to my usual keyboard, though, and although the more lowkey sound and feel won’t suit all, I think it’s ideal for focusing while gaming or working.

Speaking of, I found the KB7 to be a great performer, whether I was playing games or just carrying out typical tasks at work. It’s an extremely responsive model too, carrying an 8K polling rate and 0.125ms latency. Those kind of numbers are certainly good enough for competitive gamers, and I found the KB7 offered pin[point precision at all times.

The touchscreen is also well-sized, and using commands feels highly reactive and reliable. The touchscreen can also display PC performance info and show in-game stats (such as ammo and games won, for instance).

One thing that’s definitely worth flagging, though, is that this keyboard is wired only. The 4.3-inch touchscreen requires quite a bit too much power to run off a battery, so you do lose some of the flexibility that some rivals supply. Having said that, you’ll want to be using your keyboard wired for the best performance and lowest latency anyway, and as a gaming keyboard first and foremost, I don’t consider its wired-only setup to be a major issue.

(Image credit: Future)Should I buy the Turtle Beach Command Series KB7?

Attributes

Notes

Rating

Design & features

Slim, modular design with handy touch-screen and lots of customizability.

4.5/5

Performance

Smooth, reactive typing, 8K polling rate, wired only, but understandably so.

4/5

Value

Undoubtedly expensive, but stacks up well against rivals.

4/5

Turtle Beach Command Series KB7 review: also consider

SteelSeries Apex Pro TKL Wireless Gen 3
There’s a reason why the SteelSeries Apex Pro TKL Wireless Gen 3 is one of our favorite gaming keyboards here at TechRadar. It boasts a premium build, supplies excellent performance, and its analog switches function very well. It’s pretty pricey, but it’s still a top pick for us. Read our full SteelSeries Apex Pro TKL Wireless Gen 3 review.

Corsair Galleon 100 SD
If you’re looking for a different touchscreen-equipped keyboard, then the Corsair Galleon 100 SD could be a great pick. With strong build quality, built-in streaming controls, and slick hot-swappable MLX linear switches, the 100 SD is a highly capable gaming keyboard. It is very pricey, however. Read our full Corsair Galleon 100 SD review.

(Image credit: Future)How I tested the Turtle Beach Command Series KB7
  • Tested across multiple days
  • Used for gaming and general productivity
  • Tested by an experienced tech reviewer

I spent days testing the Turtle Beach Command Series KB7. I replaced my typical Keychron keyboard with this one, using it every day at work for general productivity. But I also used the keyboard when dipping into a few games here and there.

On top of this, I made sure to exhaust the keyboard’s various features and settings and compared it directly against rivals.

More generally, I’ve spent years testing gadgets here at TechRadar, where I serve as a Senior Reviews Writer. I’ve tested all sorts of gear, from premium wireless headphones like the Sony WH-1000XM6 to TVs like the Sky Glass Gen 2.

Categories: Reviews

I tested Sony's new entry-level turntable and, though it sounds decent enough, you deserve so much more than a brand logo for this money

TechRadar Reviews - Mon, 07/20/2026 - 12:00
Sony PS-LX3BT: Two-minute review

The Sony PS-LX3BT is one of the first new turntables to leave Sony’s R&D department in years. It comes some time after the launch of the Sony PS-LX310BT, one of what TechRadar rightfully deems to be the best turntables for beginners — and has big shoes to fill, accordingly.

And fill them it sort-of does, at least in the most literal of senses. It shares a lot of physical attributes, aims for the same sleek aesthetic, and seeks to corner the same, well, corner of the market with user-friendly interfaces and a no-nonsense approach to playing records. It’s a shame it doesn’t quite stick the landing.

Price is the major sticking point for me — its launch price far overshot similarly specced, and better-featured, turntables in the same market. This was the backdrop against which certain bugbears became serious missteps — from a stylus that Sony insists you need to replace through them, to a cheap-feeling body that feels like it’s come from a device a third of the price.

These things overshadow the PS-LX3BT’s capable performance with audio, via its decent on-board preamp and its star-of-the-show press-and-play Bluetooth connectivity. It could be good — it is good, by some metrics — but not for where it’s asking to sit.

(Image credit: Future / James Grimshaw)Sony PS-LX3BT review: Price & release date
  • Unveiled February 2, 2026
  • Priced $399.99 / £299 / AU$469

The Sony PS-LX3BT is a fully automatic, Bluetooth-enabled plug-and-play turntable, with an eye cocked squarely at the upper limits of the entry level. At its launch price of $399 / £299 / AU$469, it’s not what I would call cheap; in fact, it’s undercut by a fair few near-equivalent competitors — most compelling of which is the Audio-Technica AT-LP70XBT.

Then, there's this turntable's own sibling (they actually launched together), the Sony PS-LX5BT which is pricier but adds a more delicate stylus pressure of 2.0g ± 0.5g, a thicker and more premium rubber mat, a tweaked circuit design engineered to suppress unwanted vibration, a dedicated gold-plated audio jack out port (something not present here) with a cable in the box, plus a slightly more high-end, all-black finish.

Most other competitors in the market, though, do not have ‘Sony’ tastefully emblazoned on the chassis. Sony is a tried-and-tested household brand for AV tech, be it TVs, games consoles, CD players or integrated hi-fi systems.

Hence, the brand is likely better-trusted by new or returning vinyl enthusiasts to deliver something intuitive, fuss-free and of a minimum quality. Is this trust well-founded? The 2019 Sony PS-LX310BT was a huge success, but it was also a lot cheaper (depending on where you lived), having launched at $199 / £200 / AU$399. So, you can see the issue…

(Image credit: Future / James Grimshaw)Sony PS-LX3BT review: Specs

Dimensions

430 mm x 117 mm x 366 mm

Motor

Belt drive

Platter

Die-cast aluminum

Phono preamp

Yes

USB

No

Bluetooth

4.2

Speeds

33 1/3, 45 RPM

Stylus

Moving magnet

Extras

USB-C power adapter, 45 adapter

(Image credit: Future / James Grimshaw)Sony PS-LX3BT review: Features
  • Fully automatic operation
  • AptX Adaptive Bluetooth output
  • Built-in phono preamp and gain control

The Sony PS-LX3BT is an automatic turntable; this means it can be operated entirely by the array of buttons and switches adorning its anthracite-hued surface. Simply select the size and speed of your record, then use the buttons at the front to control the placement or removal of the tonearm. The platter’s rotation is triggered by moving the tonearm past a certain point, so even if you want to use the PS-LX3BT manually (by virtue of the silver finger-rest protruding from where the headshell would be) you literally only have to lift a finger to play a record.

Automatic turntable mechanisms are not so new, and this mechanical design doesn’t sound especially new either, with some familiar clunks and whirrs I know from my old Rotel system. What is, at least slightly newer, though, is Bluetooth connectivity, which the PS-LX3BT quite proudly has. More specifically, there’s aptX Adaptive Bluetooth transmission, for low-latency, high-resolution streaming from the turntable to your Bluetooth receiver of choice and accessed via a suavely flush button in the front-left corner of the chassis face.

On top of this Bluetooth connectivity, the LX3BT has connections the old-fashioned way, via a hard-wired stereo RCA cable out from the back. It’s an odd choice to use a permanently attached cable instead of a port – and at that, given the audience for this thing, I’m surprised there isn’t a 3.5mm Aux out either.

Still, that RCA cable feeds a built-in and switchable phono preamp, which means you can plug your turntable in most any amplifier without needing an extra gain stage. On top of that, there’s a gain switch that lets you boost or attenuate your turntable’s output by 4dB. Surprising in a different way; thoughtful, even.

The LX3BT has, like many other entry-level turntables of its ilk, a completely built-in cartridge arrangement with a replaceable stylus element. The stylus part here looks strikingly like one of Audio-Technica’s AT-3600 series, but is “designed specifically for this turntable”, according to Sony’s website FAQ. With a bit of sleuthing, the stylus does appear to be Audio-Technica’s AT3600LAX, a conical stylus with a carbon-fiber cantilever – though Sony’s specs point to a slightly heftier 3.5g tracking force. (Incidentally, my own tracking-force measurements of the tonearm put its exertion at a, for me, troublingly high 3.7g.)

Crucially, this thin layer of proprietariness creates an uneasy route to self-replacement, or indeed upgrade. Sony would prefer you go through its dealers or customer service department for a like-for-like stylus replacement, indicating that “other styluses are not supported”. Built-in cartridges and replaceable styli can be clever entry-level phenomena, and can be executed transparently well, but here, in this manner, it trends a little too close to being anti-consumer for my liking. Minus thoughtfulness points.

  • Features score: 3 / 5

(Image credit: Future / James Grimshaw)Sony PS-LX3BT review: Sound quality
  • Warm, clear sound from stylus
  • Faultless Bluetooth transmission
  • Clean, clear built-in preamp

For all the grumblings I’ve leveled at the Sony PS-LX3BT thus far, I will contend that it actually does sound good. That definitely-not-an-AT-3600L-in-a-moustache cartridge presents a perfectly reasonable quality of sound — great, even, for its place in the market.

True to the marketing copy, the LX3BT sounds warm, the general color of its cartridge being a little on the soft side with some noticeable roll-off towards the upper reaches. Future Islands’ As Long As You Are sounds no less rich for this character, all big, warbly synths and croon-adjacent missives throughout. It's an enjoyable listen.

Testing the 7-inch functionality of the automatic mechanism, I chucked on early-80s groover Emergency (Dial 999) by Loose Ends (a DJ-set staple, and an undeniable bop besides — fight me). It ended up being a great conduit by which to recognize the strengths of the PS-LX3BT’s built-in phono preamp. Often in budget turntables, these can be brittle or a little saturating; this one is clear and full, rendering those snappy standout snares and breakout vocal refrains in gratifying detail.

The whole outfit seems to benefit guitars and vocals over anything, though everything sounds, to some extent, present and fulsome; Ryuichi Sakamoto’s Risky, featuring Iggy Pop, is a sparse arrangement benefited by Iggy’s game attempt at a Let’s Dance-era Bowie impression — his voice is a raspy little joy all the time, but rendered to some good effect here.

Unobtrusively good sound quality notwithstanding, the aptX Adaptive Bluetooth connectivity is arguably the star of the show. It’s fast to connect to, and, with regards to fidelity, sounds indistinguishable from its analog alternative. I had a whale of a time in the kitchen listening to Mitski’s Nothing’s About To Happen To Me, in all its full and heartbreaking glory, fuss-free.

  • Sound quality score: 4 / 5

(Image credit: Future / James Grimshaw)Sony PS-LX3BT review: Design
  • Cheap-feeling construction
  • Easy to set up
  • One-touch Bluetooth

Pulling the PS-LX3BT out of the box, I found the chassis to be quite light. Surprisingly light, even. Putting it together, it became clear that almost every element was some form of plastic — besides occasional aspects, and the die-cast aluminum platter. It’s not a reassuring weight, though the turntable is undeniably stable on its feet.

I’m more disappointed by the perceivable cheapness of the construction on display here. A series of design decisions were made that preferred cost to user experience, leading to a pretty nasty-feeling finish on the chassis shell, a flimsy tonearm rest clasp that doesn’t actually clasp, and a spring-assisted tonearm that inspires little confidence.

At least the LX3BT is an easy thing to set up — as easy as seating the platter belt, plugging in a power adapter and delivering the hardwired stereo RCA cable to your amp or speaker of choice. It couldn’t be more plug-and-play, nor more foolproof to use via its clearly labeled buttons and knobs.

Again, the best bit of the Sony PS-LX3BT seems to be its Bluetooth. Where many other devices struggle unduly with one-touch connectivity, connecting this turntable to my portable speaker was the easiest time of my life; a single button press, a modicum of patient waiting with speaker held (camply) in-hand, and it was paired.

This aptX Adaptive connectivity can be utilized simultaneously to the PS-LX3BT’s analog outputs, too. This means dual-zone listening; I got to enjoy hi-res Mitski in the kitchen while my wife bopped along in the living room, too. And, again, it sounded great! A positive side-effect design decision, that pitches the Sony LX3BT well for casual home listening.

  • Design score: 4 / 5

(Image credit: Future / James Grimshaw)Sony PS-LX3BT review: Value
  • Great-sounding entry-level turntable…
  • …that’s fundamentally overpriced
  • And doesn’t allow self-replacement of stylus

To be completely frank, I find it difficult to square the price of this against its own quality, let alone the standards set by other turntable brands. It’s the top end of the entry level, and yet it has the same unfriendly design principles as the cheap-and-cheerful, ten-a-penny budget turntables it’s meant to outclass.

The caveat is that it does, ultimately, deliver on its core purposes. It’s an automatic turntable, and it does indeed automate much of the turntable-playing process — for the most part successfully, too. It’s a Bluetooth-enabled turntable, and its Bluetooth just works, which is something you can’t say for some other devices. And through it all, it sounds pretty darn decent.

But these are all things that turntables a third cheaper can offer. You deserve so much more for $400 / £300 than a brand logo; if you let it, that same amount of investment could buy you a solid turntable that delivers better quality sound, and gives you the keys to the kingdom vis-a-vis calibration and repairs too.

Here, it is worth my acknowledging that, in the intervening weeks since the LX3BT’s launch, there seems to have been a post-launch price-adjustment of sorts; many outlets are offering it at $348 / £250, or even slightly less. This makes the turntable a much more palatable prospect investment-wise, but I do think my criticisms stand — and that other turntables have met the moment a little better.

  • Value score: 2.5 / 5

(Image credit: Future / James Grimshaw)Should I buy the Sony PS-LX3BT?Sony PS-LX3BT scorecard

Attribute

Notes

Score

Features

AptX Adaptive Bluetooth and a fully automatic mechanism let down by an opaque approach to stylus and stylus replacement

3 / 5

Sound quality

Warm, full sound; a clear preamp and unobtrusive Bluetooth connection make for clear and easy listening

4 / 5

Design

A quintessential Sony design, sleek and minimal — but cheap in-hand, in a number of places

3 / 5

Value

A hard turntable to recommend at its launch price — cheaper and better-specced competitors exist

2.5 / 5

Buy it if…

You want simple, and your needs are simple
As far as turntables go, this is as foolproof as it gets. It has a hardwired RCA output for connection to conventional hi-fis, aptX Adaptive for Bluetooth connectivity to anywhere in your home, and automatic mechanisms for play at the press of a button.

You want an austere-looking turntable
The executive colour scheme is a good friend to minimalist living-room aesthetics — if you want something that blends in, this is it.

Don’t buy it if…

You’re buying for the long term
The Sony PS-LX3BT is a closed device, with a proprietary built-in cartridge and no adjustability or upgradeability whatsoever. If and when your hi-fi needs exceed the entry-level capabilities of this turntable, you’ll have to buy something else anyway.

You’re looking for the best bang-for-buck
It’s an unfortunate truth, but there are better turntables out there that cost less than the Sony PS-LX3BT, while possessing almost exactly the same features — and a little more repairability, too.

Sony PS-LX3BT review: Also consider

Sony PS-LX3BT

Audio-Technica AT-LP70XBT

FiiO TT13

Dimensions

430 x 117 x 366 mm

110 x 400 x 330mm

114 x 450 x 350mm

Motor

Belt drive

Belt drive

Belt drive

Platter

Die-cast aluminum

Die-cast aluminum

Die-cast aluminum

Phono preamp

Yes, switchable

Yes, switchable

Yes

USB

No

No

No

Bluetooth

SBC / aptX / aptX Adaptive

SBC / aptX / aptX Adaptive

SBC / aptX / aptX LL / aptX HD

Speeds

33 1/3, 45 RPM

33 1/3, 45 RPM

33 1/3, 45 RPM

Stylus

Moving magnet

Audio-Technica AT-VM95C

Audio-Technica AT3600LA

Extras

Dust cover, 45 adapter

Dust cover, felt mat, 45 adapter, 1m RCA cable

Dust cover, remote control, RCA cable

Audio-Technica AT-LP70XBT
For my money, the question that the Sony PS-LX3BT is trying to answer has already been asked and answered by the Audio-Technica AT-LP70XBT. It's another automatic, aptX Adaptive Bluetooth-connectible turntable aimed at the entry level, but which comes in much cheaper and at a much higher quality of design and build. Get this one!
Read our Audio-Technica AT-LP70XBT review here.

FiiO TT13
If sleekness is the name of your game, the FiiO TT13 has it in spades. This is another decent fully automatic turntable, with a replaceable AT-3600LA stylus and a phono preamp (though, unlike with the Sony or Audio-Technica, you can’t toggle this one off). It’s also got pretty lights!
Read our FiiO TT13 review here.

How I tested the Sony PS-LX3BT
  • Tested for 4 weeks
  • Used as a part of a living-room hi-fi system
  • Tested with a Cambridge hi-fi amplifier and Dali Sonik 1 bookshelf speakers

The Sony PS-LX3BT spent a month or so atop my living-room hi-fi stack, as my primary means of listening to records. As such, its output was treated by a Cambridge Audio A2 integrated amplifier, which itself fed a pair of Dali Sonik 1 bookshelf speakers.

Bluetooth connectivity was tested with my trusty kitchen speaker, a Soundcore Motion 300. For testing, I listened to a wide variety of favored records across genres, to get a comprehensive feel for the LX3BT’s performance.

Categories: Reviews

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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

TechRadar Reviews - 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

Pages

Subscribe to The Vortex aggregator - Reviews