Error message

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

TechRadar Reviews

New forum topics

Subscribe to TechRadar Reviews feed
Updated: 2 hours 50 min ago

ZipRecruiter job recruiter site (2026) review

Fri, 09/04/2026 - 11:36

ZipRecruiter is a popular job marketplace used by both candidates and employers. It’s known for its straightforward model, where candidates upload a resume and get matched with fitting jobs from a large employer pool.

For employers, posting an available role on ZipRecruiter gets that posting syndicated to over 100 other job boards, helping them find candidates faster.

How does ZipRecruiter compare to competitors? What are its pros and cons? Is it your best option? I’ve extensively tested and reviewed the platform to answer these questions. Read on to learn what ZipRecruiter offers.

ZipRecruiter: Plans and pricing

ZipRecruiter is completely free for job candidates. However, employers posting roles on ZipRecruiter need a subscription plan. The Standard plan costs $299 per month, unlocking AI job matching and the ability to post a limited number of jobs.

For $419 per month, the Premium plan unlocks more job postings and access to ZipRecruiter’s vast 56-million-resume database.

For $719 per month, the Pro plan allows unlimited access to ZipRecruiter’s resume database, paid promotions for job postings, and direct integration with various applicant tracking systems, making hiring smoother.

(Image credit: ZipRecruiter)

ZipRecruiter’s subscription prices are quite high, and the short 2-to-4-day free trial periods don’t help. However, the prices can be worthwhile for large enterprises seeking to fill strategic roles quickly, as ZipRecruiter broadcasts jobs to a massive candidate pool, and you can search its vast resume database to find your exact matches. However, for small and mid-sized businesses, I wouldn’t advise getting ZipRecruiter’s paid plans.

You can check out ZipRecruiter by clicking here.

ZipRecruiter: Setup

ZipRecruiter has an easy setup process, both for candidates and employers. Candidates can quickly sign up, create a profile, and upload resumes.

With a resume uploaded, ZipRecruiter’s AI system analyzes your resume to match it with suitable jobs. You can see those jobs right on your dashboard, and new opportunities will be emailed over time. If you find the right job, you can apply right on ZipRecruiter and await the employer’s response.

The setup process is similarly straightforward for employers. Sign up, select a subscription plan, and pay. Then, you can begin posting job roles and scouring through ZipRecruiter’s vast database for candidates.

ZipRecruiter: Features

At its core, ZipRecruiter is a hiring marketplace that matches job candidates with employers. It’s designed for both parties to get exactly what they want, while being free for job candidates but a paid platform for businesses seeking to hire candidates.

ZipRecruiter uses an advanced AI-assisted system to scan candidates’ resumes and match them to the right employers’ job listings. The moment a resume is uploaded, the candidate starts getting matched to suitable offers. The same occurs when an employer posts a new job role: the system starts to find ideal candidates who can be contacted for further interviews.

When a candidate finds a suitable job, applying is as easy as clicking a button to send your resume to the employer. But sometimes, you may be required to answer some screening questions or be directed to an external website to complete the application. You can apply for multiple jobs, and everything will be monitored from your central ZipRecruiter dashboard. You’ll see every job you’ve applied for and track your progress in one place.

(Image credit: ZipRecruiter )

Employers can also manage all processes, including reviewing resumes, tracking candidates’ status, and managing applicant flows from a central dashboard. On the Pro subscription tier, ZipRecruiter connects directly to the employer’s applicant tracking system (ATS), enabling them to manage even more of the application process without leaving ZipRecruiter.

I liked a feature I found on ZipRecruiter: an AI tool that helps job candidates to polish their profiles. With this tool, I used AI to help draft a new resume from scratch and to refine an existing one to fit a specific job. It’s generally good advice to tailor your resume for each job application, but this can be stressful when applying to many jobs. An AI tool saves the day by helping refine your resume for every role, but always review the resume afterwards and ensure it doesn’t sound too robotic. Recruiters already complain about dealing with excessive AI-generated resumes, so you shouldn’t be adding to their problems.

I also liked ZipRecruiter’s email and SMS alerts sent to candidates about new job matches. As the algorithms constantly search for roles based on your resume, you’ll receive these alerts about new opportunities you can quickly apply for. Think of ZipRecruiter now as an AI-powered assistant that’s constantly scouring new job roles for you.

For employers, there’s a relatively new Smart Outreach feature, unveiled in June 2026. This feature uses AI to convert job descriptions into personalized messages for employers to send to fitting job candidates. This way, an employer wouldn’t just be reaching out to a candidate about a possible job, but would do so with a compelling message that’ll encourage the candidate to consider the offer.

All in, ZipRecruiter does a good job of matching job candidates to available opportunities. If you need a job, you can sign up for free, get matched to fitting roles, and apply at the click of a button. If you’re an employer, you can post jobs to both ZipRecruiter and 100 other job boards at the click of a button, get matched to the right candidates, and contact them easily. However, ZipRecruiter isn’t free for employers; the subscription plans are pricey, ranging from $299 to $719 per month.

ZipRecruiter: Ease of use

As I’ve hinted at, ZipRecruiter is a user-friendly platform. During my extensive testing of ZipRecruiter, both as a job seeker and as an employer, I didn’t find noticeable issues navigating the platform.

From signing up to uploading resumes, posting jobs, getting alerts, and navigating mock interviews, the processes felt very straightforward.

(Image credit: ZipRecruiter)

I like that job candidates can use ZipRecruiter’s Job Search mobile app to find opportunities on the go.

Instead of opening a web browser each time you need to scour job opportunities, you can just open your smartphone and do that conveniently. This app lets you apply for jobs at the click of a button, and you'll receive an instant notification when an employer views your application.

However, for employers, a web browser is the primary way to use ZipRecruiter. There’s no app that lets you post jobs, review resumes, and manage applications on the go.

ZipRecruiter: Support

ZipRecruiter provides decent support for both candidates and employers. But given that employers foot the bill with expensive subscription plans, support resources lean more toward them.

First, there’s a Help Center filled with detailed user guides and answers to frequently asked questions. Maybe you want to know how to update your password, see all your saved jobs, or create a job alert; the Help Center answers your questions in detail.

If you need further support as a candidate, you can fill out a form on ZipRecruiter’s support page and await an email response. This response comes within 24 to 48 hours, or more in some cases.

Employers have their designated ZipRecruiter Help Center filled with detailed user guides and answers to frequently asked questions. Maybe you want to know how to add notes to a candidate’s profile, create a custom auto-reply message for applicants, or set screening questions for a job role; you’ll get detailed answers in the Help Center.

For further support, employers can contact ZipRecruiter via email, telephone, or live chat. Instant answers are available via telephone and live chat, but this isn’t available for candidates, understandably, because employers pay substantial subscription fees and deserve more bang for their buck.

ZipRecruiter: The competition

ZipRecruiter fares well against the competition. It’s one of many job search sites available, with major competitors like Indeed, Monster, and LinkedIn.

ZipRecruiter stands out with its job post syndication, as a post made on ZipRecruiter automatically gets broadcast to 100+ other job boards, widening the potential applicant pool.

The AI-assisted candidate matching system also makes ZipRecruiter stand out, although rival job sites are increasingly implementing similar systems. It helps candidates find the right jobs quickly and helps employers meet the right candidates without much strain.

ZipRecruiter: Final verdict

ZipRecruiter is a good option for proactive job candidates and employers. It lessens the time candidates spend on finding jobs and employers spend seeking the right candidates.

The matching system helps link the right talent to the right opportunities, quickly and conveniently.

My main complaint is the pricey subscription plans for employers, so I advise only large businesses to use ZipRecruiter, not small and medium-sized businesses with limited budgets.

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

Categories: Reviews

I spent a very boring week with the Google Pixel 11 Pro XL — and I loved every second of it

Fri, 09/04/2026 - 10:39
Google Pixel 11 Pro XL: Two-minute review

The Google Pixel 11 Pro XL, like the rest of the new Pixel 11 phones, doesn't offer much in terms of huge upgrades over the Pixel 10 line. The Pixel 11 Pro XL's design is only slightly altered versus that of the Pixel 10 Pro XL, with a new all-glass camera bump and an LED light in place of the temperature sensor that I'm convinced no one ever used anyway.

The new color options are fun, including the matte black, despite yours truly being bored of black phones.

Inside the 11 Pro XL is Google's new Tensor G6 processor. Storage options start at 256GB, then double to 512GB and 1TB. With the base model doubling in storage from last year's 128GB entry, Google didn't lower the price to match. Instead, you're going to pay $100 / £80 / AU$150 more than last year for the entry-level XL.

Not only does it cost more to buy a Pixel phone, but Google also dropped the base model's memory from 16GB to 12GB (you'll get 16GB if you choose the 512GB or 1TB storage variants). It's unclear how much of an impact this has on the overall performance, but Google says it's made optimizations to get more out of less memory.

The Pixel 11 Pro XL's cameras are fantastic, as usual. There's a new Magic Capture mode that takes the guesswork out of recording video or snapping pics of precious moments, and is surely something parents will use a lot. However, 120x Pro Zoom is more of a parlor trick than something useful. I found that, after 30x, you're not really getting good results.

The Pixel 11 Pro and Pixel 11 Pro XL are nearly identical phones, with the XL having a larger footprint, battery, and display. As such, virtually everything I said about the 11 Pro in its review applies to the 11 Pro XL. Be sure to read my Google Pixel 11 Pro review to get a full picture of what to expect from either phone.

Google Pixel 11 Pro XL: Price and availability
  • Starts at $1,299 / £1,279 / AU$2,099 for 256GB + 12GB RAM

Google's Pixel 11 Pro XL was announced in mid-August 2026, alongside a revamp of the Pixel 11, Pixel 11 Pro and Pixel 11 Pro Fold. The new line started shipping on August 20.

Like the Pixel 11 Pro, the XL version is available in Canyon, Olive, Fog, and Obsidian. There's no longer a 128GB storage option, with Google instead bumping up the starting storage amount to 256GB. Other storage options include 512GB and 1TB. The 256GB comes with 12GB of memory — a downgrade from last year's equivalent — while the rest of the portfolio has 16GB.

Google kept the price of the 256GB model the same as last year — $1,299 / £1,279 / AU$2,099 — effectively raising the price of the 11 Pro XL by $100 / £80 / AU$150. The 512GB and 1TB models are $1,419 / £1,399 / AU$2,299 and $1,649 / £1,629 / AU$2,649, respectively.

The same base-model price hike happened across the entire Pixel 11 lineup and is becoming commonplace industry-wide. Smartphone makers like Apple, Samsung, and now Google seem to have adopted the same pricing approach, with the Pixel 11 Pro XL priced to match the Samsung Galaxy S26 Ultra.

Last year's iPhone 17 Pro Max still starts at $1,199 / £1,199 / AU$2,149. However, that's likely to change on September 9 when Apple announces the iPhone 18 line; price increases seem inevitable.

  • Value score: 3 / 5
Google Pixel 11 Pro XL review: Specs

Here's a breakdown of the Google Pixel 11 Pro XL's key specs:

Dimensions:

162.6 x 76.2 x 7.6mm

Weight:

226g

Display:

6.8-inch Super Actua display

Resolution:

1344 x 2992

Refresh rate:

120 Hz

Peak brightness:

3,600 nits

CPU:

Google Tensor G6

RAM:

12GB, 16GB

Storage:

256GB, 512GB, 1TB

OS:

Android 17

Cameras:

50MP main, 48MP ultra-wide, 48MP telephoto with 5x optical zoom, 120x Pro Zoom

Selfie Camera:

42MP

Battery:

5,115mAh

Charging:

45W wired, 25W wireless

Colors:

Canyon, Olive, Fog and Obsidian

Google Pixel 11 Pro XL review: Design

The Google Pixel 11 Pro (left) alongside the Google Pixel 11 Pro XL (right) (Image credit: Future)
  • Nearly identical design to the Pixel 10 Pro XL
  • Camera bar is all glass
  • Obsidian (matte) looks great

You wouldn't have to try very hard to convince me that Google recycled last year's Pixel 10 Pro XL design with the Pixel 11 Pro XL. The two phones are nearly identical, with the biggest noticeable differences being an all-glass camera bump and new colors.

I've been using the matte black model, or Obsidian (matte) as Google refers to it, and I'm obsessed. Black phones are boring, sure, but the matte finish on every single surface of the 11 Pro XL looks really nice.

There's a new scratchproof coating on the display glass that's — surprise! — supposed to make it very hard to scratch. And while I haven't been gentle with the 11 Pro XL over the last week or so, I haven't purposely tried to scratch the screen, and I don't plan on doing so.

(Image credit: Future)

The 11 Pro XL measures 162.6 x 76.2 x 7.6mm and weighs 226g. On the right side is a volume rocker with a sleep/wake/Gemini button just above it. Other than those buttons and a USB-C port on the bottom, the Pro XL's exterior is unblemished. It'll survive an accidental splash or two thanks to its IP68 rating.

  • Design score: 4 / 5
Google Pixel 11 Pro XL review: Display

(Image credit: Future)
  • 6.8-inch Super Actua panel
  • 120Hz refresh rate
  • Smooth, bright, and vivid

If you pull up Google's phone comparison tool and look at the Pixel 11 Pro XL's screen compared to the 10 Pro XL, you'll be hard-pressed to find many differences. It's still a 6.8-inch Super Actua display with a resolution of 1,334 x 2,992 and a refresh rate of up to 120Hz.

There's that new anti-scratch coating I previously mentioned, along with a boost in HRD and peak brightness. Peak brightness now maxes out at 3,600 nits and HDR at 2,400 nits, up from 3,300 and 2,200, respectively.

The display looks sharp and is easily viewable outside on bright days. The OLED panel does a great job with both dark and bright colors, making it easy to feel as immersed as you can on a phone.

I appreciate the larger display of the Pro XL over the Pro's smaller panel, but that's a matter of personal preference. Both are great.

  • Display score: 5 / 5
Google Pixel 11 Pro XL review: Software

(Image credit: Future)
  • HiLight needs a rethink
  • Proactive Assistance is missing in action
  • Rambler is just too cool

The Pixel 11 Pro and Pro XL have the same software tricks. Android 17 is preinstalled and brings with it many Gemini features.

You can read my Google Pixel 11 Pro review for a more thorough take on the software features found in this year's crop of the Pixel Pro models, but the gist of it is this: Proactive Assistance is still something I've yet to see in action. I haven't seen a dish recommendation at a restaurant, and the conversations I've had in various apps have yet to trigger any sort of Gemini suggestion.

HiLight, a new notification light that takes the place of the temperature sensor in the camera bump, is pretty pointless in its current form. It only works during hands-free conversations with Gemini or when you receive an incoming call — when your phone is face down.

Rambler, the Pixel's new voice dictation tool, feels like a step forward for voice dictation as a whole. Talk how you normally would, make mistakes, correct yourself, and stammer through your thoughts, and Rambler will make sense of it all. It's pretty great.

  • Software score: 4 / 5
Google Pixel 11 Pro XL review: Cameras

(Image credit: Future)
  • 50MP main camera
  • 48MP ultra-wide
  • 48MP telephoto with 5x optical zoom

The Pixel 11 Pro XL boasts three rear cameras: a 50MP main, 48MP telephoto with 5x optical zoom, and a 48MP ultra-wide.

I appreciate the larger screen on the 11 Pro XL when taking pictures simply because it's a larger viewfinder, and it makes framing shots easier.

One thing I noticed when testing the 11 Pro XL's 120x Pro Zoom feature is that its AI rendering powers are hit and miss.

Several photos have obvious AI-like qualities to them. For example, the smokestack I took various pictures of at different zoom levels suddenly has two ladders — one white, one black — the closer the zoom gets.

FutureFutureFutureFutureFutureFuture

Another photo of several American flags on top of a building looks like a really bad Photoshop job, with strips placed where the stars should be, and other blatant mistakes.

(Image credit: Future)

I also used Pro Zoom to capture some pretty cool pics of the 96% lunar eclipse, but I'm not sure I trust what I see. Nonetheless, they look pretty darn cool.

FutureFutureFuture

Interestingly, to me, the photos I captured with the 11 Pro XL didn't have the same flat look as those I snapped with the smaller 11 Pro. I'm honestly not sure what's caused that difference; I took nearly identical pictures on both phones.

For my full thoughts on the Pixel 11 Pro's new camera setup, including the impressive new Magic Capture feature (which automatically takes high-quality stills while you're shooting a video), be sure to read my Google Pixel 11 Pro review.

  • Camera score: 4 / 5
Google Pixel 11 Pro XL review: Camera samplesFutureFutureFutureFutureFutureFutureFutureFutureFutureFutureGoogle Pixel 11 Pro XL review: Performance

(Image credit: Future)
  • Google Tensor G6 chipset
  • 12GB or 16GB of memory
  • 256GB starting storage

On paper, the Pixel 11 Pro XL matches a mid-range phone in the performance department. Its benchmark performance isn't impressive; it beats out three-year-old processors but falls short of current flagship models.

For example, the Pixel 11 Pro XL's Geekbench 6 single- and multi-core scores are 2,721 and 7,305, respectively. The same test on the Samsung Galaxy Z Fold 8 produces results of 2,625 and 8,430. So, the Pixel 11 Pro XL wins on single-core performance, but there's a notable drop-off in multicore, which is indicative of performance during resource-heavy tasks.

But benchmarks aren't the complete story. In my daily use with the Pixel 11 Pro XL, I haven't run into a single performance-based issue. Apps open without delay, and bouncing between multiple apps while streaming a video in picture-in-picture mode or listening to music is a process the Pixel 11 Pro XL handles without issue.

The Pixel 11 Pro XL uses Google's Tensor G6 chipset, and as previously mentioned, it comes with 12GB or 16GB of storage. Like the Pixel 11 Pro review sample, I received a 512GB/16GB sample of the Pixel 11 Pro XL. As such, I can't vouch for what the experience is like on the base model.

Google Pixel 11 Pro XL benchmark scores

Geekbench 6 single-core

2,721

Geekbench 6 multi-core

7,305

3DMark Wild Life Extreme Stress Test best

3,251

3DMark Wild Life Extreme Stress Test low

2,535

3DMark Solar Bay

Would Not Run

  • Performance score: 3.5 / 5
Google Pixel 11 Pro XL review: Battery
  • 5,115mAh battery
  • 45W wired charging
  • 25W wireless charging

The Pixel 11 Pro XL comes with a 5,115mAh battery and is capable of wired charging up to 45W. Support for the Qi2.2 standard also brings 25W wireless charging to the phone; Google claims 30 hours of battery life, and my experience has matched that with regular use.

My days start at 6am and usually end around 10pm, with lots of messages sent in several apps — Slack, BlueBubbles, Facebook Messenger, Instagram, etc. — too much doomscrolling, and plenty of interacting with Gemini.

When connected to a 65W charger, the Pixel 11 Pro XL went from completely drained to 25% in 15 minutes. At 30 minutes, it was at 49%, and it took 1 hour and 32 minutes to fully charge.

I experienced the same charging cadence with a 45W charging adapter, which I suppose is to be expected. During both of those tests, I monitored the charging output and never saw it go above 28W.

However, there's a new Extreme Charging Mode that you can enable in the quick settings panel. When running the same charging test, going from 0-100%, the Pixel 11 Pro XL charged much, much faster.

At the 15-minute mark, it was at 38%; at 30 minutes, it was at 73%; at 1 hour and 3 minutes, it was fully charged. I recorded a peak charging speed of 38W with Extreme Charging Mode turned on, which limits background activities while your battery is below 50% to increase charging speeds.

I would love to see a permanent toggle to always have Extreme Charging Mode turned on, instead of having to enable it every time you want to use it. Hopefully that's something Google implements in the future.

  • Battery score: 4 / 5
Should you buy the Google Pixel 11 Pro XL?Google Pixel 11 Pro scorecard

Attributes

Notes

Rating

Value

Double the storage but half the memory for $100 / £80 / AU$150 more? Boo!

3 / 5

Design

A format Google keeps refining.

4 / 5

Display

Smooth, bright and vivid.

5 / 5

Software

Gemini and Android 17 make a great team.

4 / 5

Cameras

A trio of cameras make it easy to take great pics.

4 / 5

Performance

You’re not going to notice any hiccups despite low benchmark scores.

3.5 / 5

Battery

All-day battery life with impressively fast charging.

4 / 5

Buy it if...

Your current Pixel is older than three years
There's almost no reason to upgrade from a Pixel 9 or Pixel 10, especially if you're coming from a Pro XL variant. But if you have an older phone that's starting to show signs of age, then the Pixel 11 Pro XL is a great choice.

You're an avid Gemini user who wants more, sooner
Everywhere you look on a Pixel, Gemini is waiting. The same can be said about almost all Android phones, but Gemini and other bleeding-edge Android features typically make their debut on the latest Pixel before trickling down to other devices.

Don't buy it if...

You have a smartphone released in the past two years
There's really no reason to jump up to a Pixel 11 Pro XL if your phone is less than three years old — especially if it's a Pixel phone. This year's hardware is more of a software bump, and some of these features may very well make their way to older Pixel phones. Staying on the sidelines this time around is A-OK.

Google Pixel 11 Pro XL review: Also consider

Google Pixel 10 Pro XL
Google's Pixel 10 Pro XL is practically the same phone as the 11 Pro XL, with a slightly new design and new software tricks. Sure, there's a new processor, a bump in performance, and faster charging, but if you want to save some cash and get virtually the same experience, then last year's model is a good pick.

Read our full Google Pixel 10 Pro XL review

Apple iPhone 17 Pro Max
Android fans may get upset, but there's something to be said about joining the blue bubbles gang. The iPhone 17 Pro Max is a solid choice, offering a robust camera and reliable performance.

Read our full iPhone 17 Pro Max review

How I tested the Google Pixel 11 Pro Why you can trust TechRadar

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

After wrapping up my Pixel 11 Pro review, I switched to the Pixel 11 Pro XL. The phones are nearly identical, save for the latter's larger size, and as such, I didn't spend as much time with the Pro XL as the standard Pro.

That said, I went through the same testing process, just in a condensed timeframe. I chatted with Gemini, took plenty of photos, texted, scrolled, and even gamed a bit.

In other words — I lived with the phone, treating it as my daily driver.

Read more about how we test here.

  • First reviewed: August 2026
Categories: Reviews

I've watched The Grand Tour's return to Prime Video and although I miss Clarkson, May and Hammond, you can't deny the charm of our new trio — especially Francis Bourgeois

Fri, 09/04/2026 - 01:00

When I spoke to new presenting trio James Engelsman, Francis Bourgeois and Thomas Holland about their debut on The Grand Tour, I admitted that I am an absolute dunce when it comes to cars. Are they prepared to impart wisdom to idiots like me? "Well, did you enjoy it [the series]?" Engelsman asks me. When I reply yes, he says "That's all that matters."

In a nutshell, this is what I think we need to keep coming back to now that Prime Video has revamped its hit car show. Not everybody is going to be thrilled with the changes, and understandably so — original presenters Jeremy Clarkson, James May and Richard Hammond are the absolute lifeblood of the concept. But at the end of the day, no single person can sustain a light entertainment show forever.

And light entertainment The Grand Tour is. None of the core sections of the show have been altered, with our new trio still galivanting across the world in expensive supercars, or doing something stupid like sticking parts of a classic school bus to a microcar. If chaos is what you're tuning in for, it hasn't gone anywhere.

Neither, in a way, have the original trio. Amazon has shrewdly been able to include their spirit and legacy in a way that doesn't overshadow the authority of the new presenters (no spoilers here, though), and the new six episodes feel like the perfect homage to everything that has come before.

Do I miss Clarkson, Hammond and May having the run of resources and Amazon budget? Without question. But just because something has changed doesn't inherently make it worse.

Don't write our new hosts of The Grand Tour off as mere 'content creators'

(Image credit: Prime Video)

If, like me, you're chronically online but don't fall into any type of niche content, you might only recognize one of the three faces above. Bourgeois went viral on TikTok for his (frankly, nerdy) love of trains, but the internet was won over by his wholesome charm. As luck would have it, his love and understanding of cars is almost as strong as a high-carbon steel train track.

But our other two presenters shouldn't be overlooked. Engelsman and Holland are the creators of popular car YouTube channel Throttle House. Fans have dubbed it "the spiritual successor to Top Gear for years," and with a similar blend of fun and smarts, it's easy to see why. They even had Hammond on in a cameo role years before any of the TV stuff took off.

For the trio to be asked to take over feels somewhat written in the stars, particularly as more traditional media formats are actively looking to capitalize on the success of online influencers. However, TV and content creation are two entirely different disciplines, and having an active social media presence doesn't automatically mean that you'll make a great presenter.

Yes, there are bouts of awkwardness, stilted banter and hesitant connection, but there's a great deal of promise in the three as a newly-formed team. There's an underlying ease between them that proves why they were brought together, and their expansive love for all things transport is all the glue that they really need. In time, they'll clearly be seasoned, and I don't think they'll need much help to get them to that level.

Yes, I still miss the original team — I can't help it

(Image credit: Prime Video)

I'm desperate to talk about — but won't, at least here — the ways that Prime Video has incorporated the essence of Clarkson, Hammond and May into The Grand Tour's new episodes, but you're just going to have to see it to believe it. It's a mixture of passing the baton onto a new generation, and knowing there's a huge chance that viewership will drop if they're not somehow included.

The meat of the show, from the global car trips to sheer stupidity, acts as a constant, regardless of who is presenting. Our new boys might not be as hilariously mean to each other as the originals were, but the spirit of just being idiots on the telly hasn't died out. Who is involved here almost doesn't matter, because you're so wrapped up in the possibility of that being you. I hate driving, but I still want to try out a supercar on the palm tree-laden streets of Malaysia.

Ultimately, The Grand Tour's revamp is as successful as it ever could have been. Nothing has been compromised, yet everything subtly feels different... in a positive way. A particular shoutout must go to Bourgeois, who I think is easily the strongest of the bunch. His combination of deep-dive intellect and soft-spoken delivery will make him the James May of tomorrow, and I can't help but feel immensely proud of that.

Categories: Reviews

I loved the minuscule weight of this Logitech gaming mouse — but I was even more surprised by its price

Thu, 09/03/2026 - 19:00
Logitech G305 X Superlight: Review

The Logitech G305 X Superlight is a lightweight wireless gaming mouse. Logitech is no stranger to this category, but this addition to its G305 line aims to keep things relatively simple while including some surprisingly advanced features relative to its price point.

It has quite a basic appearance, with a lack of branding or any odd contours. There’s an RGB light strip that looks too small to be effective, but it manages to brighten up the G305 X Superlight to an impressive degree — especially the black model — thanks to its wealth of animation customizations.

(Image credit: Future)

The overall build quality is great, too, adhering to Logitech’s typically high standards. Despite how light the unit is (it weighs just 61g), it’s surprisingly solid, lacking any flimsiness or hollowness. The plastic body is smooth with just a hint of texture that feels tactile and just as premium as the best gaming mouse shells. Furthermore, all of its buttons and the scroll wheel are solidly planted without a hint of play.

To customize the inputs (as well as the aforementioned RGB lighting) of the G305 X Superlight, you’ll need to download Logitech’s G HUB software. In one section, you’ll find five configurable DPI sliders that you can set to a range between 100 and 44,000 — you can then cycle through these using the dedicated button on the G305 X Superlight, which is thankfully placed on top rather than underneath, making it easy to access. You can save your five settings as a custom preset or select from several provided by Logitech, catering to various game types and scenarios — something I haven’t seen much in peripheral software.

In another section, you can reassign all of the G305 X Superlight’s buttons. There are a large number of assignments available, ranging from a multitude of system and media commands to keyboard inputs and mouse adjustments. You’ll also find custom actions for Discord, Overwolf, OBS, and Streamlabs Desktop. What’s more, a second mapping layer is available via Logitech’s G-shift feature, which is accessed by holding down a button of your choosing.

(Image credit: Future)

However, there aren’t any performance-related tweaks for the G305 X Superlight; you can’t alter the lift-off distance or debounce times, nor can you enable motion sync or angle snapping, for example. About the only feature in this area is what Logitech calls BHOP mode. This is designed to prevent accidental knocks of the scroll wheel from registering by ignoring the first scroll event unless a second is performed within a certain time frame (adjustable between 100ms and 1000ms).

Such omissions didn’t spoil my time gaming with G305 X Superlight, though. Its low profile suited my grip style, and the rear hump was just about prominent enough to sit comfortably in my palm without being obstructive. Also, I could grip the mouse securely with my thumb and ring finger during lift-offs thanks to the sidewalls that narrow as they reach the bottom, making up for the lack of grip tape or embossing.

Maneuvering the G305 X Superlight is easy thanks to that aforementioned lightness, too. And despite the relatively small skates, swipes were smooth and frictionless on my mouse pad. This was the case even when I had the USB cable attached — a surprise given it isn’t braided as many gaming mice cables are. Although it created some noticeable drag, it’s still lighter and more malleable than your average rubber cable.

(Image credit: Future)

As for the mouse buttons, I appreciated the ergonomics of their downward slant and subtle indentations. Clicks are solid yet snappy, with a good amount of feedback and a surprisingly deep travel. This means spamming is relatively effortless while accidental taps are unlikely to register. The side buttons are easy to reach and actuate, too.

The scroll wheel is easy to flick thanks to its light notching, yet there’s still just enough feedback to make single scrolls easy to perform. However, there were a few occasions when scrolls triggered when I pressed the middle button. This button can also feel quite firm if you don’t hit it at precisely the right angle, which can make presses awkward, but with practice this became less of an issue.

I had no problems with the connectivity of the G305 X Superlight. It connected to my devices via both Bluetooth and the 2.4GHz dongle without a hitch, and hot-switching between them was quick and easy thanks to the selector button underneath. You’ll also find a handy slot here for storing the dongle.

(Image credit: Future)

It is a shame there’s no native 8KHz support, although most PC gamers probably won’t need it. Taking everything into consideration, though, the G305 X Superlight is a great value gaming mouse that offers high performance and has a pleasing amount of features at this price point.

Logitech G305 X Superlight review: Price & availability
  • $79.99 / £69.99 / AU$149.95
  • Available now in black or white
  • Good price for a wireless gaming mouse

The Logitech G305 X Superlight costs $79.99 / £69.99 / AU$149.95 and is available now. Two colorways are available: black and white. A USB cable is included for charging and wired play, but it isn’t braided. There are also no spare skates or optional grip tape to adhere to the sidewalls or mouse buttons.

Nevertheless, the G305 X Superlight is well priced for a gaming wireless mouse that has two wireless modes. It also performs very well and has a generous number of input customizations, although it lacks performance-related adjustments. It’s much cheaper than the Razer Viper V4 Pro, even though that mouse has a similar number of input customizations and no additional Bluetooth support. However, we loved virtually every aspect of its performance when we tested it, and gamers may find its form more ergonomic.

If you’re looking for something even cheaper, the Cooler Master MM311 is one of the best value gaming mice around right now. We were impressed with its light and symmetrical design, as well as its fast performance. Again, it doesn’t feature Bluetooth support, and you also have to supply your battery, but it’s hard to complain too much about such omissions when it’s so cheap.

Should I buy the Logitech G305 X Superlight?

Attribute

Notes

Score

Value

There aren’t many gaming mice that offer more for less, although the non-braided cable is a slight shame.

4.5 / 5

Design and features

Solid yet light, and with a comfortable form, although the low profile mightn’t appeal to everyone. The input customizations are impressive, although more advanced tweaks are absent.

4 / 5

Performance

The G305 X Superlight is impressively smooth and snappy, with good click feedback. Some may find the scroll wheel a little too light, though.

4.5 / 5

Final score

For not a lot of money, the G305 X Superlight offers a well-made, comfortable, and high-performing gaming mouse with the added benefit of multiple wireless connectivity modes.

4.5 / 5

Buy it if…

You want to good value
The G305 X Superlight is a veritable bargain when you consider its multiple wireless connectivity modes, customization options, and excellent performance.

You want plenty of input customizations
G HUB offers plenty of rebinding and DPI options, which are always welcome.

Don't buy it if…

You don’t like low profile shapes
Although the G305 X Superlight is reasonably long, it’s very low to the ground, which might not suit every grip style.

You want to tweak performance
There aren’t any tweaks you can make to alter the actual performance of the G305 X Superlight, which is a shame.

Logitech G305 X Superlight review: Also consider

Razer Viper V4 Pro
Razer is known for making top-tier peripherals, and the Viper V4 Pro is no exception. It’s fast, well made, and offers plenty of customizations. However, it’s considerably more expensive than the G305 X Superlight, and it lacks Bluetooth support. Read our full Razer Viper V4 Pro review.

Cooler Master MM311
For a mouse that’s even gentler on your wallet than the G305 X Superlight, consider the MM311. Its fast and smooth performance is impressive for the price, although you will have to dispense with an inbuilt battery and Bluetooth support. Read our full Cooler Master MM311 review.

(Image credit: Future)How I tested the Logitech G305 X Superlight
  • Tested for several days
  • Used for gaming and other tasks
  • Plentiful gaming mouse experience

I tested the G305 X Superlight for several days, and used it to play several games, including Counter-Strike 2, which is a great test for mice given it requires extremely fast and precise movements. I also used the mouse for general browsing and working.

I’ve been PC gaming for over a decade, so I’ve used plenty of mice in that time. I’ve also reviewed a large number of gaming mice before, including other Logitech models.

Categories: Reviews

I spent a week with the Google Pixel 11 Pro, and I think Google has perfected the Pixel formula

Thu, 09/03/2026 - 10:36
Google Pixel 11 Pro: Two-minute review

Google's Pixel 11 Pro doesn't move the needle very far in terms of new design, hardware, and features. It looks almost identical to the Google Pixel 10 Pro, save for a new all-glass Camera Bar. The temperature sensor has been replaced by an LED that lights up when you're talking to Gemini or you're getting a phone call, but it's about as useful as that temp sensor was in the first place.

Inside the phone is a new Tensor G6 processor, and either 12GB or 16GB of memory. Performance during daily tasks and gaming isn't an issue, despite what Pixel naysayers may like to claim. That smaller RAM allotment is reserved for the entry-level 256GB option, while more storage means more memory for both the 512GB and 1TB models. Google didn't double the storage for nothing, however, as the 256GB model keeps its predecessor's 256GB price, effectively hiking the base cost of the Pixel 11 Pro by $100 / £80 / AU$150.

The cameras are mostly the same as those on the 10 Pro, but with some new software features that are mostly good. The new Camera Looks lets you tailor the 11 Pro's camera performance to your liking and makes it easy to switch between different settings on the fly. Magic Capture, meanwhile, makes it super easy to capture both photos and video of special moments. The new 120x Pro Zoom feature is cool, but only in limited situations; we're still trying to figure out exactly what those are.

(Image credit: Future)

Battery life is good enough to last all day, and if you're in a hurry, you can enable a new Extreme Charge Mode feature to top off the 11 Pro faster than non-extreme charging does.

Software-wise, the 11 Pro is loaded full of AI and Gemini features. The new Rambler voice dictation tool is really cool and will let you talk like you used to in middle school, but get rid of all the fluff and make you sound coherent.

Overall, the Pixel 11 Pro is a solid phone that doesn't move the Pixel line too far forward. Most of the new features are software and could very well come to older Pixel devices in due time. Only Google knows if or when.

That said, it's a great phone that's sure to make any older Pixel owners happy. Or, if you've been tempted to jump into Samsung or Apple's ecosystem, come on over; the Pixel 11 Pro's water is fine.

Google Pixel 11 Pro: Price and availability
  • Starts at $1,099 / £1,079 / AU$1,849 for 256GB + 12GB RAM

Google announced the Pixel 11 Pro alongside a refresh of the entire Pixel lineup — except the Pixel 10a — on August 12, with an official launch date of August 20.

The Pixel 11 Pro is available in four colors: Canyon, Olive, Fog, and Obsidian. Google did away with the 128GB base storage model, and instead is offering 256GB and 512GB storage allotments with 12GB and 16GB of memory, respectively. The base model has less RAM than the Pixel 10 Pro, dropping from 16GB to 12GB.

However, instead of keeping the previous starting price of $999 / £999 / AU $1,699 for the base model, the Pixel 11 Pro now starts at $1,099 / £1,079 / AU$1,849 for 256GB or $1,219 / £1,199 / AU$2,049 for 512GB. Sure, you're getting double the storage, but you're also getting less memory and paying more.

Price increases are something we're seeing across all smartphone makers, and even though it's our new reality, it doesn't make it any easier to accept.

That said, the Pixel 11 Pro's starting price is in line with comparable smartphones like the Samsung Galaxy S26 Plus and Apple iPhone 17 Pro.

  • Value score: 3 / 5
Google Pixel 11 Pro review: Specs

Here's a breakdown of the Google Pixel 11 Pro's key specs:

Dimensions:

152.7 x 71.9 x 8.4mm

Weight:

204g

Display:

6.3-inch Super Actua display

Resolution:

2856 x 1280

Refresh rate:

120Hz

Peak brightness:

3,600 nits

CPU:

Google Tensor G6

RAM:

12GB, 16GB

Storage:

256GB, 512GB, 1TB

OS:

Android 17

Cameras:

50MP main, 48MP ultra-wide, 48MP telephoto with 5x optical zoom, 120x Pro Zoom

Selfie Camera:

42MP

Battery:

4,850mAh

Charging:

30W wired, 25W wireless

Colors:

Canyon, Olive, Fog and Obsidian

Google Pixel 11 Pro review: DesignFutureFutureFuture
  • Similar design to the Pixel 10 Pro
  • Camera bar is now all glass

There isn't much to talk about in terms of design changes between the 11 Pro and the 10 Pro. It's hard to tell the two apart unless you look closely. I'm undecided if that's a bad thing — I rather liked the design of the larger Pixel 10 Pro XL.

The biggest difference is the camera bar that now features an all-glass design instead of a mix of glass and metal. The thermometer sensor has been replaced with a notification light, which Google calls HiLight. I go into more detail about HiLight in the software section, but after under a week of use, I'd say it's just as useful as the thermometer sensor. As in — there's really no point to it right now.

Along with a revamped camera bar, Google claims the display has a new coating that makes it twice as scratchproof. I haven't put that claim to the test.

The Pixel 11 Pro measures 152.7 x 71.9 x 8.4mm and weighs 204g. The volume and sleep/wake buttons live on the right edge, with a USB-C port on the bottom edge of the phone. It's IP68 rated, meaning it should have no issues surviving a plunge in the pool.

It's available in four colors, all of which I happen to rather like. Google sent me the Olive version of the 11 Pro and the Obsidian (Matte) version of the 11 Pro XL. I've grown rather bored of black or white phones, so I'm pretty fond of the Olive option and imagine I'd be just as happy with Fog or Canyon. They're fun colors. I like fun.

  • Design score: 4 / 5
Google Pixel 11 Pro review: Display

(Image credit: Future)
  • Direct sunlight isn't an issue
  • Crisp, clear and sharp

The Pixel 11 Pro's display is nearly a 1:1 match to the Pixel 10 Pro's on the spec sheet. It's a 6.3-inch Super AMOLED display with a 1,280 x 2856 resolution and a 1-120Hz refresh rate.

Where the 11 Pro breaks away is with brightness, offering a 2,400-nit HDR peak and up to 3,600 nits outdoors. That's up from 2,200 and 3,300, respectively, on the Pixel 10 Pro.

I had no complaints about the Pixel 10 Pro XL's screen, and the same can be said about the 11 Pro's. I can use it outside in direct sunlight without issue, and the small bump in overall brightness helps ensure content remains visible.

There's really nothing groundbreaking about this screen, but the bar was already high. Colors are bright and vibrant for binge-watching videos on YouTube, while text and graphics look clear and sharp when scrolling Reddit. You won't have any display-related problems with the Pixel 11 Pro.

  • Display score: 5 / 5
Google Pixel 11 Pro review: Software

(Image credit: Future)
  • HiLight is pretty pointless
  • Gemini is everywhere you look
  • Rambler feels like a leap forward for voice dictation

The Pixel 11 Pro ships with Android 17 and is chock-full of Gemini features — including Proactive Assistance, which Google says will proactively make recommendations and surface information without you explicitly requesting it throughout the operating system.

For example, if someone asks you about an upcoming flight, it's supposed to find and present your flight time without you leaving the conversation. It's also capable of showing meal suggestions for the restaurant you're at in the At a Glance widget.

After over a week of use, I can't tell you whether or not anything I've experienced on the Pixel 11 Pro has been from Proactive Assistance. I certainly haven't seen any meal recommendations when at a restaurant, and nobody's asked me about an upcoming flight. I'm sure, eventually, maybe, perhaps, I'll see a recommendation and the promised magic will make sense, but right now: Meh.

The same can be said for the new HiLight feature. Google swapped out the temperature sensor in the camera bump and replaced it with a multi-color light. The indicator light is reminiscent of my BlackBerry days, when I'd have specific colors set for important contacts and on an app-by-app basis.

The HiLight sensor on the Pixel 11 Pro (Image credit: Future)

Right now, HiLight's only triggered during two very specific scenarios: when you're interacting with Google Gemini hands-free, and when one of your contacts saved as a favorite is calling. It's only active when your phone is face down.

I've triggered Gemini a few times with the Pixel 11 Pro sitting on my desk for the sole reason of invoking HiLight. The animations and various colors are fun to look at, but I rarely talk to Gemini hands-free. And if I do, it's usually while holding the phone, when I long-press the side button and ask about something on my screen (super handy), so the light doesn't come into play at all.

But where HiLight really falls short is the fact that it's limited to just phone calls right now. I can't tell you how often my phone rings, but I can say it's not a lot.

That said, my most used and loved Pixel feature has long been the ability to place the phone face down on my desk during meetings and instantly have do not disturb turned enabled. It effectively cuts me off from the outside world. So when I first read rumors about HiLight, I wasn't very happy.

"Google is ruining my favorite Pixel feature!", I yelled alone in my office.

So, part of me is glad the LED light is so crippled. I'd surely fall victim to enabling it beyond phone calls and be far more distracted during meetings than I'd like.

Google hasn't said if it plans on bringing more apps to HiLight, including those made by third parties, but a developer has already figured out how to do just that. You need to be comfortable with sideloading and reactivating the feature every time your phone reboots — but it's possible with HiLight Studio.

If you're someone who often uses voice dictation instead of tapping on a glass display, you'll love Google's new voice-input tool, Rambler. I rarely use voice dictation, simply because it's historically been so bad, often requiring extra time to fix mistakes.

However, Rambler feels like it's a big step in the right direction. You activate it following the same steps you always have, start talking, and when you're done, you're given a clean block of text, without any awkward pauses and filler words. If you say 'um' a lot, or repeat words while trying to finish your thought, Rambler strips all of that out.

After reviewing your text, you can then tell Rambler which words to fix or ask it to rewrite the entire thing with a different tone.

I don't know if it'll get me to start using voice dictation more often, but I can say it's pretty darn cool.

  • Software score: 4 / 5
Google Pixel 11 Pro review: Cameras

(Image credit: Future)
  • 50MP main camera
  • 48MP ultra-wide
  • 48MP telephoto with 5x optical zoom
  • Magic Capture is a nice addition

The Pixel 11 Pro has three rear cameras: a 50MP main, a 48MP telephoto with 5x optical zoom, and a 48MP ultra-wide.

There have been slight changes to the sensors and image processor of the Tensor G6, but the most notable improvements to the camera setup of the Pixel 11 Pro lineup this year come in the form of new features.

There's a new 120x Pro Zoom for far-away shots, a new Camera Looks option for fine-tuning photos based on your preferences, and a Magic Capture feature that eliminates the need to decide when to take a video or photo.

I've tested the 120x Pro Zoom on a wide range of subjects, from people to random ducks to buildings — and it's hit or miss. There's a clear degradation of image quality and an increase in the AI-like look to the pictures the more you zoom. I'd say it's nothing but diminishing returns after you get past 30x.

Future/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason Cipriani

When taking a 120x photo of my son from across five tennis courts, he ended up looking more like a watercolor painting than a standard photo. However, a 120x photo of the spire on our town hall — well, it doesn't look terrible. Not great, but not terrible.

Future/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason Cipriani

The new Camera Looks feature is neat, and something the iPhone has had for a couple of years now, in that you can preset your preferred settings for things like contrast and brightness, save it as a look, and use it going forward. Google includes a few Looks to get you started. I'm not sure how many people are going to dive into tweaking and creating their own look, but the option is good and welcome.

Magic Capture is by far the most notable new feature on the Pixel 11 Pro; it's a dedicated shooting mode in the Camera app. When selected, you press the shutter button and hold the phone and frame the subject as if you're recording a video. Tap the shutter button again when you're done.

Then, when you go into the Photos app, you'll see a series of photos and videos from the session. It's very much like Google Clips, the standalone camera Google released in 2017 and abandoned soon after.

I used Magic Capture to get pictures and videos of my niece playing volleyball, and I was totally skeptical going into it. However, after letting Magic Capture do its thing — which also requires some processing after the fact — I was pleasantly surprised to see short video clips of her in action and not just standing around waiting for the ball. There were also several photos of her diving for or setting a ball that made sense — situations I would have tried to capture on my own, sometimes successfully and sometimes not.

Here's an example of Magic Capture being used to snap a moving train:

A photo captured using Magic Capture on the Pixel 11 ProFuture/Jason CiprianiA photo captured using Magic Capture on the Pixel 11 ProFuture/Jason CiprianiA photo captured using Magic Capture on the Pixel 11 ProFuture/Jason Cipriani

Overall, the photo quality of the Pixel 11 Pro sticks to Google's tried-and-true results. That said, I do have to admit that the pics from the 11 Pro feel a little flat to me. Colors aren't as bright and vibrant as I'd normally see, but with some small tweaks to create my own Look, I'm sure I could boost saturation and get the results I wanted.

Then again, there's nothing really wrong with the settings out of the box.

  • Camera score: 4 / 5
Google Pixel 11 Pro review: Camera samplesFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiFuture/Jason CiprianiGoogle Pixel 11 Pro review: Performance

(Image credit: Future)
  • Google Tensor G6 chipset
  • 12GB or 16GB memory
  • 256GB starting storage

I'll get the potentially controversial part out of the way: I don't have any issues with the Pixel 11 Pro's performance. It's handled everything I've thrown at it with ease.

That includes watching YouTube live streams while scrolling through Reddit, triaging my inbox, the occasional gaming session in Asphalt Legends, and fumbling my way through a Fortnite match using only touch controls. I'm so bad.

Before I go much further, let's cover the basics. Inside the Pixel 11 Pro is Google's Tensor G6 processor, which boasts better and faster image processing and improved on-device Gemini capabilities. The amount of memory you get is based on how much storage your phone has. If you order the 256GB base model, you're getting 12GB. If you order anything above that, you're getting 16GB.

Google claims it's made improvements to memory usage, and Pixel owners with 12GB of memory shouldn't have any performance issues.

I received a 512GB model with 16GB of memory. As such, I can only speak to my experience with that specific build. I don't know if Google really has optimized Gemini and the rest of the AI features to leverage less memory.

The entire reason there's an industry-wide memory shortage, along with rising costs, is because AI relies heavily on memory. Reducing the amount of memory in a phone that boasts a lot of AI features seems counterintuitive.

But I digress.

On paper, Pixels have never been the fastest phones. The same goes for the Pixel 11 Pro compared to other current flagships like the Samsung Galaxy S26.

The latter beats the Pixel 11 Pro across the board in Geekbench 6 and 3DMark benchmark testing, and while Google's phone does actually beat something like the Motorola Razr Plus 2026 in the same tests, the Razr uses a processor that debuted three years ago. Google's Tensor G6 chipset is box-fresh.

However, in daily use, the Pixel 11 Pro delivered consistent, reliable performance no matter what I was doing. I haven't had a single moment where it felt underpowered or like it wasn't living up to what I'd expect from a flagship phone in 2026. Benchmark scores can be useful, but they rarely tell the whole story.

Google Pixel 11 Pro benchmark scores

Geekbench 6 single-core

2,222

Geekbench 6 multi-core

5,314

3DMark Wild Life Extreme Stress Test best

3,107

3DMark Wild Life Extreme Stress Test low

2,021

3DMark Solar Bay

Would Not Run

  • Performance score: 3 / 5
Google Pixel 11 Pro review: Battery

(Image credit: Future)
  • 4,850mAh battery
  • 30W wired charging
  • 25W wireless charging

The Pixel 11 Pro has a 4,850mAh battery and supports up to 30W charging. That battery is only slightly smaller than the Pixel 10 Pro's 4,870mAh cell, but Google estimates battery life at over 30 hours (up from 24 hours last year), and I'd say that's mostly accurate.

On days when I streamed far too many YouTube videos or played Asphalt Legends, battery life still lasted the entire day, but I had to charge overnight.

To test the Pixel 11 Pro's charging speed, I completely drained the battery, plugged it into a 45W power adapter, waited for the phone to boot up, and then turned on Extreme Charging Mode — a new feature, making its debut with the Pixel 11 line.

When enabled — and while your battery is under 50% — Extreme Charging Mode limits background activities to increase charging speeds.

At the 15-minute mark, the 11 Pro reached 25%. At an hour, it was at 86% and reached 100% in under 90 minutes.

And the result? Extreme charging does make a difference in charging speed.

I ran a charging test without it enabled, and the Pixel 11 charged to 24% in 15 minutes, 71% in an hour, and fully charged in 1 hour and 45 minutes.

Even though the 15-minute results were nearly identical, the rest of the charging process was faster. It's worth enabling if you're in a hurry.

In addition to the new extreme fast charging feature, the Pixel 11 Pro now supports 25W wireless charging and the Qi2.2 standard, and it includes the required magnets in the phone itself (unlike Samsung devices) to attach any compatible accessories like wallets, mounts, or to hold it in place on magnetic wireless charging pads.

I'm an avid user of all things MagSafe/PixelSnap/whatever marketing name you want to apply to a ring of magnets on the back of a phone.

  • Battery score: 4 / 5
Should you buy the Google Pixel 11 Pro?Google Pixel 11 Pro scorecard

Attributes

Notes

Rating

Value

An unwelcome price increase over last year's model.

3 / 5

Design

A tried-and-true design that looks great.

4 / 5

Display

A display that hits all the marks of what you'd want in a flagship phone.

5 / 5

Software

Android 16 and One UI 8.5 team up to provide a reliable experience.

4 / 5

Cameras

All three cameras take solid pics, but don't rely on the telephoto past 3x.

4 / 5

Performance

Quick and powerful, but the phone does get hot during intense tasks.

3 / 5

Battery

All-day battery life is welcome, but slow charging speeds are not.

4 / 5

Buy it if...

You have an older Pixel
If you've done your time and paid off your last phone with your carrier over a few years, you're ready for an upgrade. The Pixel 11 Pro makes for a fine upgrade if your phone is older than, say, a Pixel 9.

You want to go all in on Gemini
The Pixel 11 Pro has Google Gemini baked into it at every turn, and for someone who uses Gemini on a daily basis, it's a fantastic experience.

You never want to miss those special moments
The Pixel 11 Pro's Magic Capture feature eliminates the decision-making process of when to take photos or videos. You just hold your phone up and let the camera do the heavy lifting. It's perfect for someone with young kids or, heck, any proud parent.

Don't buy it if...

You have a Pixel 9 or 10
There's zero reason to upgrade if you currently have a Pixel phone from the last two years. This year's update feels more like a software update than hardware. It's entirely possible most of the 11 Pro's features come to older models. It's safe to wait this one out.

You want the "best" performance
If you look at just the performance numbers, the Pixel 11 Pro isn't all that impressive. There's no denying that, and even though that's not the entire story, for some, it's enough to look elsewhere. There's zero shame in that.

Google Pixel 11 Pro review: Also consider

Google Pixel 10 Pro
Google's Pixel 10 Pro nearly matches every spec of the 11 Pro, save for a slight design tweak and some software features. Yes, it's a year older, but it's also just as capable. Better yet, it forgoes the $100 / £80 / AU$150 price hike and is currently marked down across a wide range of vendors.

Read our full Google Pixel 10 Pro review

Apple iPhone 17 Pro
It's not an Android phone, but Apple's iPhone 17 Pro is everything the Pixel 11 Pro is, with the added bonus (if you're into it) of running iOS.

Read our full iPhone 17 Pro review

How I tested the Google Pixel 11 Pro Why you can trust TechRadar

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

I was on a road trip dropping my daughter off at college when the Pixel 11 Pro arrived at my house. It was waiting for me when I got back home, and I immediately set it up and started testing it. I've spent just over a week using it for work and play, as if it was my personal device.

That means I spent a lot of time chatting with Gemini, taking photos and the occasional video, texting with friends and family, and playing the occasional game. I also spent my fair share of time doomscrolling on social networks I should have ditched long ago.

I even have a BlueBubbles server set up at my house, which allows me to continue my iMessage conversations — the platform of choice for my entire family — while testing Android phones.

Read more about how we test here.

Categories: Reviews

DJI's Osmo 360 II fixes its predecessor's flaws, and remains much more affordable than Insta360

Thu, 09/03/2026 - 06:40
DJI Osmo 360 II: two-minute review

Just a year after launching its debut 360 camera, the Osmo 360, DJI has delivered a sequel that addresses pretty much every complaint I had with the original — without asking you to pay through the nose for the privilege.

The Osmo 360 II looks and feels almost identical to its predecessor: same dimensions, same weight, same general shape. But DJI has used that 12-month gap wisely, fixing the two biggest issues I had with the original Osmo 360 in one swift update.

First, the lenses. They're now built with a tougher optical coating, and — far more importantly — they're user-replaceable if you crack or scratch one. For anyone using this camera to capture action sports, that alone might be worth the modest price increase.

Second, DJI's approach to underwater shooting has changed. The waterproof rating hasn't budged from 10m, but where DJI once actively discouraged submersion with the original Osmo 360, it now positions the Osmo 360 II as a viable sub-aqua option for snorkelers and scuba divers.

(Image credit: Future | Sam Kieldsen)

On the imaging side, the headline feature is native 8K video at 60fps — a first for any 360 camera, edging out even the freshly-launched Insta360 X6 (which tops out at 8K/50fps). Dynamic range, slow motion, timelapse resolution and SuperNight low-light performance have all improved too, though the underlying sensor appears to be physically the same as before, suggesting these are largely processing-driven gains rather than a major hardware leap.

Performance is solid across the board: battery life is roughly on par with the original, storage remains a generous 105GB built-in, and DJI's Mimo and Studio apps are dependable if unspectacular.

Is this a transformative upgrade? Not quite — image quality is a slight rather than dramatic step forward. But DJI has plugged the gaps that mattered, kept what already worked, and done it all while keeping this camera's price significantly below that of the Insta360 X6.

Against the GoPro Max 2, the Osmo 360 II's low-light performance is a clear win too. Right now, my instinct is that there's very little to separate the Osmo 360 II and the X6 on image quality alone — I'll be testing the two head-to-head in more depth soon to see which comes out on top overall — but as an all-rounder at this price, the Osmo 360 II is a seriously compelling 360 camera.

DJI Osmo 360 II specsDJI Osmo 360 II specs

Type:

360 camera

Sensor:

1.1-inch x 2

Max aperture:

f/1.9

Max video resolution:

8K / 60fps

Max photo resolution:

120MP

Storage:

105GB internal + microSD card slot

Screen:

2-inch OLED

Connectivity:

USB-C 3.0, Bluetooth 5.1, Wi-Fi 6

Dimensions:

2.4 x 1.4 x 3.2 inches / 61 x 36.3 x 81mm

Weight:

6.5oz / 183g

DJI Osmo 360 II: Price and availability
  • Launches on September 15 2026, roughly a year after the original DJI Osmo 360
  • Standard Combo costs £509 / AU$921, up from the original's £409.99 / AU$759
  • The Adventure Combo (£639 / AU$1,096) throws in useful extras

The DJI Osmo 360 II arrives around 13 months after its predecessor, and it's more expensive: the Standard Combo will set you back £509 / AU$921, compared with £409.99 / AU$759 for the original Osmo 360 at launch. That's a pretty big jump, but it doesn't stop the Osmo 360 II being significantly more affordable than its biggest rival.

That rival is the Insta360 X6, which starts at £619.99 / AU$1,049.99 for its own Standard bundle. Not that the Osmo 360 II is the budget option in this category, though: the GoPro Max 2, now available for as little as £269.99 / AU$849.95, undercuts DJI comfortably if outright affordability is your main concern.

If you can stretch to it, the pricier Adventure Combo (£639 / AU$1,096) is worth consideration. It throws in two extra batteries (three in total), a charging case that holds three batteries at once, plus a 1.2m selfie stick — accessories that anyone shooting for extended periods will likely want anyway, and which would cost more bought separately.

As with several other recent DJI launches, the Osmo 360 II won't be arriving in the US for now, with the company's application for regulatory authorization still pending. American buyers will need to look elsewhere (or import through a third party) in the meantime.

  • Price score: 4.5/5
DJI Osmo 360 II: Design
  • Same 61 x 36.3 x 81mm dimensions and 183g weight as the original
  • Lenses are now tougher and user-replaceable if damaged
  • Still 10m waterproof case-free, but DJI now encourages underwater use

Hold the Osmo 360 II next to its predecessor and there's very little physical difference. DJI has kept the same 61 x 36.3 x 81mm body and 183g weight, and the overall silhouette — a squat, screen-fronted block with two bulging lenses, one on either side — is unchanged. The screen, connectivity options and mounting hardware, including the 1/4-inch tripod thread and DJI's own magnetic quick-release mount, all carry over unaltered from the original too.

Future | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam Kieldsen

The main changes here are on the lenses themselves. DJI says the Osmo 360 II's lenses use a tougher optical coating that better resists scratches, and if you do manage to crack or damage one, it's now a user-replaceable part via DJI's own lens replacement kit (£35 / AU$50 — and if you prefer, there's also the option of taking or sending it to an authorized repair spot to get someone else to fix it). It sounds like a modest tweak on paper, but it's the biggest change DJI has made this generation from a peace-of-mind perspective, particularly for anyone shooting the kind of high-impact action footage where dinging the lenses is a real risk.

DJI hasn't increased the Osmo 360 II's case-free waterproof rating, which remains at 10m (half of the 20m offered by the Insta360 X6). What has changed is the company's own confidence in the camera underwater: where DJI previously discouraged underwater capture on the original Osmo 360, it now positions the Osmo 360 II as a viable option for snorkelers and scuba divers working within that 10m limit.

  • Design score: 4.5/5
DJI Osmo 360 II: Performance
  • Battery capacity increased slightly, and format stays interchangeable across the Osmo range
  • DJI's claimed 100 minutes of 8K/30fps recording held up in testing
  • Extended 8K/60fps recording can cause overheating

DJI has nudged the Osmo 360 II's battery capacity up from 1950mAh to 2150mAh, but real-world battery life is roughly on a par with the original. The batteries themselves remain interchangeable across both Osmo 360 generations and recent Osmo Action-series cameras, so anyone already invested in DJI's action camera ecosystem can use batteries across their various devices.

DJI claims you get 100 minutes of continuous 8K/30fps recording on a full charge. In my testing, I used 25% of the battery to capture 25 minutes of 8K/30fps footage, which backs up DJI's figure almost exactly.

(Image credit: Future | Sam Kieldsen)

Push the Osmo 360 II to its most demanding setting, 8K at 60fps, and a warning prompt appears letting you know that overheating is a possibility. How long you actually get before that happens depends on ambient conditions, with airflow and temperature both playing a part, but in my testing indoors at room temperature, with no fan or breeze to help cool the camera, it lasted around 19 minutes before shutting itself down to cool off. If you're planning extended 8K/60fps sessions, especially somewhere warm, it's worth considering that limitation.

Storage carries over unchanged from the original Osmo 360, with a generous 105GB of usable built-in space, plus a microSD card slot if you need more.

The new Insta360 X6 next to the even newer DJI Osmo 360 II. (Image credit: Future | Sam Kieldsen)

Already own a DJI Mic? There's a good chance it'll connect wirelessly to the Osmo 360 II for 24-bit audio, as part of DJI's OsmoAudio ecosystem. If you don't, the camera's four built-in microphones do a decent job of capturing usable sound on their own.

Editing and reframing your 360 footage means going through one of DJI's two companion apps: the mobile DJI Mimo app, or desktop-based DJI Studio. I tested both, and found them solid and dependable overall, if not spectacular. Mimo's AI-assisted auto-editing tools left me distinctly unimpressed, so if you were hoping to shoot all day and wake up to a finished edit, temper your expectations — but for anyone willing to manually cut, reframe and tweak their own clips, both apps get the job done without drama. DJI Studio stood out in particular for its excellent subject tracking and the impressive 64x slow-motion mode, which uses interpolation to smooth out footage.

  • Performance score: 4/5
DJI Osmo 360 II: Image quality
  • First 360 camera offering native 8K/60fps video recording
  • SuperNight low-light mode now runs at up to 60fps
  • 120MP still photos with HDR

The Osmo 360 II is the first 360 camera on the market to offer native 8K video at 60fps — even the just-released Insta360 X6 tops out at 8K/50fps. That's not the only imaging upgrade either: DJI has added a stop of extra dynamic range, bumped slow-motion up to 4K/240fps (from 4K/100fps), pushed timelapse resolution to 16K/30fps (from 4K/30fps), and introduced HDR support for the 120MP photo mode. Edit your footage in DJI Studio and you can also access up to 64x slow-motion via frame interpolation.

Then there's SuperNight 2.0, DJI's low-light shooting mode. I wasn't blown away by the original Osmo 360's version of SuperNight — it was decent, no more — but here the results look significantly cleaner and sharper, and you can now record at up to 60fps rather than being capped at 30fps. There is one catch: you still can't shoot in D-Log M with SuperNight 2.0 active, so you're restricted to the standard color profile (Adaptive Tone remains available, however).

Interestingly, the image sensor itself appears to be physically identical to the one in the original Osmo 360, which suggests that all of the above gains have come via processing and software refinement rather than new hardware. That's not necessarily a bad thing, but it does mean these image quality improvements are evolutionary rather than the product of some new imaging leap.

All the usual 360-camera fundamentals — stabilization, stitching, selfie stick removal and flare handling — are brilliantly handled here. It's a slick camera that can capture good-looking footage while requiring very little effort from the user.

Taken as a whole, image quality is excellent, if perhaps not a huge leap over the original — more a slight but real improvement on what was already a very good setup built around a large, capable sensor. For the sample video embedded in this review, I shot footage using the default Standard color profile, D-Log M (graded afterward using DJI's own LUT plus some manual color tweaks), and SuperNight 2.0, all recorded at 10-bit. Everything was reframed in DJI Studio on my Mac, then edited in DaVinci Resolve.

Video is, understandably, still noticeably sharper, more detailed and more impactful in daylight, but shoot with a bit of care and it's absolutely possible to capture excellent after-dark footage too.

Photos are perfectly fine too, though I've never considered still photography much of a draw on a 360 camera personally — it feels like a secondary feature here rather than a primary selling point.

Future | Sam KieldsenFuture | Sam Kieldsen
  • Image quality score: 5/5
DJI Osmo 360 II: testing scorecard DJI Osmo 360 II

Attributes

Notes

Rating

Price

Pricier than the original Osmo 360, but significantly cheaper than the Insta360 X6.

4.5/5

Design

Same body as before, but user-replaceable lenses and newfound underwater confidence are big wins.

4.5/5

Performance

Solid battery life and storage, dependable apps, but 8K/60fps can trigger overheating.

4/5

Image quality

First native 8K/60fps 360 camera, with better dynamic range and a much-improved SuperNight 2.0.

5/5

Should I buy the DJI Osmo 360 II?Buy it if...

You want flagship features without flagship pricing
The Osmo 360 II undercuts the Insta360 X6 by over £100 while offering the first native 8K/60fps 360 video on the market, plus meaningfully improved SuperNight low-light performance.View Deal

You like peace of mind when shooting action sports
Cheap, user-replaceable lenses mean a cracked or scratched lens is no longer catastrophic — a direct answer to one of the biggest weaknesses of the original Osmo 360.View Deal

You regularly shoot in low light
SuperNight 2.0's jump to 60fps and its cleaner results make this a far stronger nighttime shooter than the GoPro Max 2, which stumbles noticeably once the sun goes down.View Deal

Don't buy it if...

You're on a tight budget
If price is your primary concern, the cheaper (if lower-spec) GoPro Max 2 undercuts the Osmo 360 II comfortably, especially now that it's available at discounted pricing.View Deal

You're based in the US
The Osmo 360 II isn't launching stateside for now, with DJI's regulatory authorization still pending — so US buyers are out of luck unless they're willing to import.View Deal

Also consider

If money is no object and you want the sharpest, cleanest 360 footage around in any light, the Insta360 X6 remains the camera to beat — it's just going to cost you considerably more than the Osmo 360 II.

Read our full Insta360 X6 reviewView Deal

GoPro's comeback 360 camera is significantly cheaper than the Osmo 360 II and delivers excellent daylight image quality, but its low-light performance can't compete, and its own replaceable lenses haven't been engineered for the same low-light or dynamic range gains DJI has made here.

Read our full GoPro Max 2 reviewView Deal

How I tested the DJI Osmo 360 II
  • I tested the DJI Osmo 360 II Adventure Combo ahead of its official release
  • I shot video across a long weekend trip to northeast England, plus my hometown
  • I used the included 1.2m selfie stick and a car mount, in daylight and at night

(Image credit: Future | Sam Kieldsen)

I was sent a DJI Osmo 360 II Adventure Combo a few days ahead of its official release for testing. I put the camera through its paces on a long weekend trip to the northeast of England, as well as around my Kent coast hometown, mounting it on the included 1.2m selfie stick for on-foot shooting and attaching it to my car for vehicle-mounted footage. I tested it across a range of lighting conditions, from strong daylight to full nighttime darkness, and also shot a handful of 120MP stills alongside my video testing. I also tested both DJI's desktop and mobile companion apps, using them to reframe footage and photos.

  • First reviewed September 2026
Categories: Reviews

The Gentlemen season 2 is darker, meaner and more 'brutal' than its Netflix debut — but shock new storylines haven't compromised on style or satisfaction

Thu, 09/03/2026 - 02:01

When I spoke to star Theo James a few months ago for Sky TV movie Fuze, he teased that The Gentlemen season 2 would be "even darker" than its Netflix debut. At the time, I wrote this off as something he might say simply to create buzz and a good headline — but it turns out, he wasn't kidding.

I think that it takes a lot to shock the modern viewer, given how immediately exposed we are to everything in the world thanks to social media. Somehow, The Gentlemen season 2 (which is out now) manages exactly that, and I spent a good deal of time while watching its eight episodes with my mouth wide open.

The sense of crazed chaos established in its first season, which debuted back in 2024, is only heightened, which in itself feels like an extraordinary feat. If you strip it back, Eddie (James) is following the classic 'chosen one' archetypal storyline, but his unhinged family and work colleagues add layers of deranged complexity... and a fair few obstacles along the way.

Eddie is still working directly with Susie (Kaya Scodelario) and Bobby (Ray Winstone) as the action picks back up, but the trio's new business partners come in the form of an Italian crime network. Cue some questionable under-the-table deals, alliances and betrayal, and a tiger kept in a questionably small cage.

At the Halstead manor, things aren't exactly quiet either. Freddy (Daniel Ings) has been quietly sent to a rehab centre while Lady Sabrina (Joely Richardson) tentatively tries to keep him in check from a distance. Bobby's decision-making takes on a more spiritual approach, while Susie genuinely seems like the only person around with her head screwed on.

The groundwork is set, then, for a Shakespearean level of drama that's tinged with signature Guy Ritchie-style brutality to unfold. But whatever you think that looks like, times it by 100, and add in a chainsaw.

The Gentlemen season 2's darker storylines are the ideal step forward — and make for a tasty season 3 setup

It's odd to think of The Gentlemen season 1 as superficial or even jovial, but compared to season 2, that's how it feels in hindsight. Without giving the game away, new episodes are integral to Eddie's development, transforming him from a criminal network cog into a brutish, no-nonsense leader.

Because we already know that season 3 has been renewed, the only clear path for The Gentlemen to follow is charting the rise of Eddie's own illegal underground empire, or at least his individual role within that world. Susie describes him as a dog desperate to be free of his leash in episode 1, and by episode 8, there really is no turning back.

In essence, the brutal underbelly that we've always known was there — both in the wider network and within Eddie himself — comes to the surface. Whether it's mental manipulation, underhand strategy or outright physical force, everyone should be scared of what is actually capable of happening... including Eddie.

For us, that means getting stuck into scene after scene of wildly outlandish chaos. People die in ways that I didn't actually think people could die, cruelty and deception translate into delicious onscreen tension, and where do I even begin with the physical and emotional torture? Ball-achingly good, to put it one way.

It's no surprise that Jame and his gaggle of core co-stars are as impeccably brilliant as they always have been, and it's a relief to know that each person involved in The Gentlemen can be so solidly relied on. But at the same time, a huge shoutout must go to our new cast members, none of whom feel at all out of place.

Hugh Bonneville's eccentric aristocrat feels like Downton Abbey on acid, and is worth tuning in for alone. First-time actors Maya Jama and Chris Eubank Jr. are astounding in a completely different way, never letting their lack of experience get in the way of a convincing performance. They're somewhat playing fictional versions of themselves (or at least share characteristics), but still: credit where credit is due.

Style and satisfaction are still number 1 priorities

(Image credit: Netflix)

The more of The Gentlemen season 2 you see, the more you perversely want to watch, yet the best way to describe a single episode is that it feels like a sumptuous feast. You feel full digesting one, able to sit apart as a full, complete story.

I like the fact that the Netflix show feels so rich that you don't — or perhaps can't — binge it all in one go, and the devil really is in the detail. Given how heavy-handed the streamer usually is with how its TV shows look (read: they all look the same), The Gentlemen is able to adhere to this while being incredibly stylish at the same time.

Through shrewd editing, handwritten effects, sound and narrative structure, new episodes feel playful and unserious despite its often sombre and hard-hitting undertones, with Ritchie's tonal balance across it all being nothing short of impressive. Clearly, the best way to deal with the bad things in life is to sprinkle in as much absurdity and humor as possible, and Ritchie never lets us forget that.

Do parts wane in interest and have pacing issues? Absolutely, but what modern TV show doesn't suffer from that? In fact, I doubt that The Gentlemen season 2 actually cares about this: it exists in the world with wanton abandon, and you're going to like it however it's packaged, or else.

Categories: Reviews

I've watched all of The Paper season 2 and still think it's trying too hard to be Parks and Recreation — but the Brits are the best part of The Office spinoff

Wed, 09/02/2026 - 11:00

I shouldn't still be on the fence about a show's existence as it enters its second season, but here we are. The Paper season 2 returns to Peacock on September 9 — but out of its 10 new episodes, I'd say that only half are worth watching.

Why? Because The Office spinoff is still suffering from the same overarching issue as it did in season 1: everything is just that little bit underwhelming. Exactly a year after we left the writers of the Toledo Truth Teller, not much has changed in terms of the big picture.

Editor-in-Chief Ned (Domhnall Gleeson) is still desperately searching for the stories that will take his team to the next level, while Esmeralda (Sabrina Impacciatore) rarely thinks about anybody's reputation but her own. Nicole (Ramona Young) is still giving Kelly Kapoor vibes in a majorly inferior way, while Mare (Chelsea Frei)... well, she's just trying her best.

Without giving anything away, there are enough major dramatic plot points to steer the drama away from journalists despairing in an office. However, some of these are short-lived, and worse, give off trying-too-hard energy.

In Mean Girls, Regina George tells Gretchen Wieners to "stop making fetch happen. It's not going to happen," and I almost want to shake Peacock by the shoulders and explain that the same thing is happening here. The Paper season is being forced into existence, rather than having having a natural evolution.

Still, you can grab laughs where you can in some places, but for Brits, there's a lot more reason to be smiling. Tim Key and Gbemisola Ikumelo are easily the strongest players in this wayward cast, and they alone would be enough reason for me to keep watching if season 3 is given the green light.

The Paper season 2 is trying (and mostly failing) to make fetch happen

I think we can all agree that The Paper is far more similar to Parks and Recreation than it ever has been to The Office. This awkward resemblance only becomes more noticeable in season 2, as Ned's eagerness to become a pillar of the community (which incidentally seems to hate him) only increases.

I think the key difference here is how easy and natural the camaraderie, and sense of community, comes in Parks and Rec. None of that is genuine in The Paper, to the point where I'm almost rooting for Ned to fail. With the exception of Esmeralda, everyone is better off spending their time elsewhere — something that is directly explored as season 2 continues.

Some fans have critiqued The Paper's 10-episode bursts, arguing that seasons should rival the 25 episodes a piece we used to get for such shows back in the glory days of the early 2000s. However, I'd argue that the season already struggles to fill those 10 episodes, with some feeling like stagnant filler content in between the more intriguing storylines.

I can also see how Esmeralda was so divisive in season 1, and in bad news for critics, I think creators have doubled down on her grating personality traits this year. From the moment episode 1 kicks off, her extroverted vanity is on display in full force, and it hits pantomime levels of performance.

While there are points in season 2 where I enjoy this, her temperament does risk overshadowing the rest of the ensemble cast... and I've come away wishing that I felt a more invested in their stories as a result.

Tim Key Supremacy

(Image credit: Peacock)

But never fear! There are two heroes in our midst in the form of Tim Key and Gbemisola Ikumelo. Where Esmeralda is spiralling into chaos, Key's character Ken is the only one able to use this to his advantage. Esmeralda becomes the sidekick in their compelling (and genuinely hilarious) double act, which hits its peak between episodes 2 and 3.

A sharp, witty British man who is always armed with thinly-veiled criticism is exactly what this show needs, and Key plays his part to perfection. In fact, his scenes made me feel ashamed that I'd forgotten how good a comedic actor he is — since The Ballad of Wallis Island, I'd filed him in the director directory part of my brain.

Then there's Ikumelo. I couldn't believe that this quietly sassy and genius American accountant was the same woman who found Diane Morgan's fake farts on Last One Laughing UK season 2 so funny that she screamed her tears out. Metamorphosis is an incredible (and incredibly rare) skill to have as an actor, meaning she should never be underestimated. Now she just needs more bookings on UK comedy shows, please.

I know I may have made it sound like it's the case, but The Paper season 2 is far from the worst TV show, or comedy series, in 2026. But don't think it will be gracing my 'best of the year' lists, either.

Categories: Reviews

The Whisper Man review — Robert DeNiro and Adam Scott can't redeem this predictable and disappointing Netflix movie

Wed, 09/02/2026 - 06:20

Netflix has struggled in the thriller space recently. After The Last House disappointed me, I was hoping that The Whisper Man would restore my faith in the genre.

Unfortunately, the new Robert DeNiro and Adam Scott led movie was another bitter disappointment. It had potential, but suffers from pacing issues and a predictable plot throughout. This was a frustrating experience for me because with a storyline like this, they could have included some smarter twists.

The Whisper Man follows grieving widower Tom Kennedy (Adam Scott), whose son Jake (Acston Luca Porto) is abducted after they move to a new town to start a new life. What was meant to be a fresh start turns into a living nightmare for Tom, who is desperate to find his son.

This desperation leads him to his estranged father, Peter Willis (Robert DeNiro), from whom Tom has completely separated himself to the point they don't share a surname. Peter has never met his grandson, but after a panicked Tom arranges a meet with him he agrees to help track him down. Peter was once a detective, so has the resources and skillset that Tom needs to track down Jake.

The first act of the movie does feel promising. Jake's abduction is sudden and creepy, there's the family tensions to dive into, and I had hoped a good movie would follow. Unfortunately, it loses momentum fast and becomes quite predictable.

It also differs from the book in some ways, so those wanting to see a completely faithful adaptation might be left disappointed. Without spoiling it, some of the changes to the script annoyed me and I think it could've benefitted from following the book more accurately.

The Whisper Man has very good performances from its core cast, especially from DeNiro and Scott. They did the best that they could with the script, but even their combined talent couldn't make this a better movie. Their father-son relationship is an interesting one but quite a lot of their reconnection felt rushed.

The story is focused on family, especially grief and loss, and I would've liked to learn more about what had happened between Peter and Tom. The few emotionally driven scenes we did get between them felt important, so I was frustrated that other, less important scenes seemed to drag on longer than they needed to.

Another great addition to the cast is Michael Keaton, who plays convicted serial killer Frank Carter, whom Peter helped to convict in the height of his days as a detective. Scenes between DeNiro and Keaton are also well acted, providing a familiar interrogation scene that crime lovers never seem to tire of.

Unfortunately, The Whisper Man is another run of the mill thriller movie that doesn't offer anything new. It's an alright thriller to watch on a rainy day if you want a familiar, easy to follow story, but it won't satisfy viewers who are looking for twists, turns and unpredictability.

I'm hopeful that Netflix picks up some better thrillers in future because so far in 2026, it's been very disappointing. If you're looking for good titles to stream, why not check out our guide to the best Netflix movies.

Categories: Reviews

I applaud the ambition in The Blood of Dawnwalker, but this open-world RPG features too much busywork and not a strong enough vampire fantasy to truly excel

Tue, 09/01/2026 - 16:00

When I previewed The Blood of Dawnwalker, its prologue was an impressive snapshot of what Rebel Wolves was hoping to achieve with its vampiric open-world role-playing game (RPG). It was a tight and tense introduction to a game that encourages you to spend your time wisely, live with the consequences of your actions, and balance Coen’s newly acquired Vrakhir abilities with the hope of maintaining his humanity.

Now, after sinking dozens more hours into the full release, this team that includes several ex-Witcher 3 developers hasn’t quite made that formative game’s spiritual successor. However, I can’t fault the ambition found in the studio’s debut release — even if not every idea is fully realised and a few elements lack polish.

Review info

Platform reviewed: PS5
Available on: PS5, Xbox Series X|S, PC
Release date: September 3, 2026

Ever since playing through that exciting opening, which sees Coen’s village razed and his family held captive to be used as sacrifices in an upcoming coronation for the valley’s vampire overlord, Brencis, I've been desperate to get back in and see what awaited in the rest of the game.

So, it’s strange that when you first hit the open world, the game starts to feel a little aimless. Your main goal may be to kill Brencis and save your family, but the direct approach is almost certainly going to lead to your death. Instead, it’s smarter to take the time to destabilise Brencis’ reign by going after his generals and increasing your power for the upcoming showdown.

No rest for the wicked

(Image credit: Bandai Namco / Rebel Wolves)

Unfortunately, that means engaging with a lot of dull and fairly repetitive tasks dotted around the map, mostly clearing camps of soldiers and smashing up boxes of supplies. The set dressing changes a little depending on which vampire lieutenant you’re going after (it may be blood supplies for Ambrus or slivovitz distilleries with Bakir), but you’re ultimately going through the same motions.

And I was surprised at how little some of the vampire leaders actually feature in the story while you’re being such a thorn in their side. Most development happens off-screen, while notes are found on soldiers bemoaning Coen’s actions and edicts are issued as you become more notorious.

There isn’t as much time given to interacting with these villains before an inevitable confrontation. And that’s a shame, because when you do come face-to-face with these flamboyant, furious, and fascinating characters, they end up being killed off just as they’re starting to get interesting.

(Image credit: Bandai Namco / Rebel Wolves)

I did find that The Blood of Dawnwalker found its feet when you dig into one of its many lengthier multi-part quests. Given the developer’s history and pedigree, and what was shown off in the prologue, this is more of what I expected. You get to spend time with some entertaining and well-written characters, explore interesting environments and dungeons, tackle challenging combat encounters, and often emerge with some nice new loot.

Choices and consequences come front and center in many of these quests, and I felt the game gives a surprising amount of room, as your investigations can open up different approaches or outcomes. And quite cleverly, not all effects are felt immediately, with some outcomes or repercussions only felt much later down the line. It shows Rebel Wolves really thought about the interconnectivity of its world and wanted to show the impact you have on it. A huge plus for the RPG lovers who thrive on that level of world-building.

The final countdown

Tying it all together is the 30-day time limit that’s central to The Blood of Dawnwalker. Much has been said about this mechanic, but the countdown to Brencis’ coronation and your family’s execution wasn’t a constant threat looming overhead. I considered it a lot at the start, but eventually, instead of making me question whether every single action was worth doing or made worthwhile progress, losing chunks of time eventually became something I just accepted as the price of doing business.

(Image credit: Bandai Namco / Rebel Wolves)

Where it was always a frustration, though, was during levelling up, where almost all skills and perks require you to spend time learning them, meaning you could lose half a day (or night) simply to make Coen stronger. I would understand this if it were reserved for learning more advanced skills, but when the same price must be paid to get 25 per cent more health or some passive stamina regeneration, it doesn’t feel worth the cost.

Best bit

(Image credit: Bandai Namco / Rebel Wolves)

Getting stuck into one of the game's more involved quests is when I feel The Blood of Dawnwalker really hits its stride. These are the moments I reflect on most fondly after my time with the game, mixing in dungeon crawling, exploration, and investigation — often alongside a well-written character or two — to create compelling and exciting scenarios. Even more so when they layer on tough moral choices at the conclusion, which sometimes come back to help (or hinder) you later.

The transition from day to night didn’t substantially change the game, either. Yes, it enables Coen’s vampiric powers, with neat tricks such as shadowstepping across chasms or walking up walls, but these don’t have the impact I feel they could have.

For starters, there’s so much blood available in consumables or animals to hunt out in the wild that I never felt this moral dilemma the game wants to push about Coen needing to feed. There is a neat idea that only happens if you’re low on health in vampire form and chatting with a non-player character (NPC), where you risk Coen giving in to the hunger and sucking the blood from his conversation partner, but it didn’t happen to me once in my playthrough.

Tonight I'm going to suck...your blood

(Image credit: Bandai Namco / Rebel Wolves)

When it comes to a clash of steel and fangs, the vampire powers don’t elevate what is a perfectly serviceable, if mostly underwhelming, combat system. The foundation is based on directional inputs to attack, block, or dodge, and picking the correct direction will set up your opponent for a devastating riposte from your sword or claws.

You can weave in a few abilities that range from the mundane, such as using pocket sand to temporarily blind an enemy, to several witchcraft or vampiric skills that burn your opponent's blood or set them up for a gruesome and bloody explosion. And while it all works fine, it never flows as smoothly as you would like or feels as impactful as you wish it did. Combat ultimately became something that I got through impassively rather than finding myself excited for the next encounter.

And that’s ultimately what makes me struggle to wholeheartedly recommend The Blood of Dawnwalker. Too many elements are dull, repetitive, or underused to keep me fully engaged over its lengthy playtime. There are captivating moments, though, that I feel some may be able to appreciate more if you’re able to overlook some of its flaws. Perhaps with some updates or a sequel, the ambitions of Rebel Wolves can be fully met.

Should you play The Blood of Dawnwalker?

(Image credit: Bandai Namco / Rebel Wolves)Play it if…

You enjoy rich and interconnected RPG worlds
The bigger and more involving quests in The Blood of Dawnwalker are a highlight, with your choices being felt not only immediately, but also much later in the game, with some surprising consequences of your actions.

You want an RPG to tide you over until The Witcher 3 Remastered
Given the development team’s history, there’s Witcher DNA throughout The Blood of Dawnwalker, and this will serve as a perfectly good stopgap until the third entry’s remaster.

Don’t play it if…

You can’t look past some jank
Combat is not always the most elegant or smoothest experience, and there’s some awkwardness in Coen’s movement or traversal using vampiric powers that can frustrate.

You tire of repetitive tasks
A fair chunk of the game’s quests involve repeating an almost identical objective to disrupt the vampire leaders, and even though it’s not essential, it does get boring fast.

Time pressure gives you choice paralysis
I don’t actually think the game’s 30-day timer is as oppressive as it could be, but this could give some players some real choice anxiety.

Accessibility

The Blood of Dawnwalker has limited accessibility features. Subtitles are available in 14 languages, but you cannot customise the size, color, or position on the screen. Two control options are available, with the ability to invert both axes if required.

There are more choices when it comes to refining the difficulty of the game, though. As well as general preset options ranging from Story to Duelist, you can also specifically tweak enemy health, enemy aggressiveness, how easy it is to perform perfect blocks, and whether blocking is automatic if you want an easier combat experience.

How I reviewed The Blood of Dawnwalker

I’ve put around 25 hours into The Blood of Dawnwalker over the past week and a half, and while I haven’t completed it yet, I feel I’ve seen more than enough of the game’s main story and side quests to offer a comprehensive verdict.

I spent all my time playing on a PlayStation 5 Pro on a Samsung S90C OLED TV and Samsung HW-Q930C soundbar while using a DualSense Wireless Controller.

I played on Balanced mode, which aims to run the game at 40 frames per second (fps) in dynamic 4K. A 30fps Quality mode is also available, but I preferred the option with a more stable fps that didn’t impact the visuals significantly. A Performance mode targeting 60fps will also be made available at launch.

First reviewed September 2026.

Categories: Reviews

The Cosori Dual Blaze Twinfry Compact is a big-basket air fryer that does a lot more than you'd expect — for a very reasonable price

Tue, 09/01/2026 - 09:21
Cosori Dual Blaze Twinfry Compact: 30-second review

The Cosori Dual Blaze Twinfry Compact might be a bit of a mouthful to say, but there's plenty to like about this air fryer.

Things start off well when you open the box with a useful quick start guide and fun little cookbook with over 20 recipes, showing you the range of possibilities available with this appliance.

With roast, grill and bake modes alongside the standard air fry function, and with an 8.6L basket that also has a divider so you can cook two things simultaneously, the Twinfry Compact could replace multiple appliances in your kitchen.

From crispy chicken wings, roast potatoes and wonderfully baked cakes, to gooey cookies, grilled burgers, and reheated pizza, I enjoyed using this air fryer.

(Image credit: Future)

The controls are straight forward, the basket is easy to clean, and it's not going to set you back as much as some of the more premium machines - while giving you results which are almost as good as expensive rivals.

It's a large device, so those with smaller kitchens might struggle to fit it in, while the lack of a shake reminder means you'll need to be vigilant when it's in use to make sure your food is turned/tossed correctly.

But these are minor points against what is a very capable air fryer, and one you should consider buying — especially if you can find it discounted.

Cosori Dual Blaze Twinfry Compact: price and availability
  • £159.99, but I’ve seen it discounted to £130
  • This model isn't available in the US and Australia

The Cosori Dual Blaze Twinfry Compact Air Fryer price is £159.99, putting it in the middle of the larger-basket market, although I have seen it discounted to £130 at some retailers, so it’s worth shopping around to find the best price.

That means the Twinfry Compact finds itself up against some strong competition, including the Philips 1000 Series Dual Basket and Tower Elite 11 Litre Flexi Drawer.

The list price equates to around $220 / AU$300, but this particular model isn't available in the US and Australia.

  • Value score: 4.5/5
Cosori Dual Blaze Twinfry Compact: specifications

Review Model

CAF-TF801-AUK

Number of baskets

1

Number of cooking programs

6

Cooking programs

Air Fry, Roast, Grill, Bake, Reheat, Dry

Extra functions

Dual Zone with Removable Divider, DualBlaze Tech

Smart control

No

Wattage

2700W

Capacity

8.6L

Temperature range

35-240C

Time range

1 minute - 4 hours

Dimensions

339cm (D) x 482cm (W) x 281cm (H)

Dishwasher-safe

Yes

Weight

8kg

Cosori Dual Blaze Twinfry Compact: design
  • Well designed with clear buttons and useful quick-start guide
  • You can split the basket in two, and there are six preset modes
  • No shake reminder or window on the basket

The Cosori Dual Blaze Twinfry Compact Air Fryer is nicely designed, with a sleek matte finish and clear controls. Sure it’s on the larger side, but the sizable 8.6L basket has to go somewhere.

It does mean you’ll need a chunk of worksurface space to fit the 339cm (D) x 482cm (W) x 281cm (H) machine, so those with smaller kitchens might find it a struggle to comfortably place this air fryer, or have enough space in a cupboard to store it. If you are tight on counter space, consider a smaller basket air fryer, or a vertically stacked, dual-basket option such as the Philips 4000 Series Stacked Dual Basket or Ninja Double Stack XL.

FutureFuture

You can split the 8.6L basket into two 4.3L offerings with the included divider in the box. This allows you to cook two separate foods, at different settings, simultaneously, offering greater flexibility.

Get past the size though, and there’s a lot to like. I was particularly impressed with the quick start guide in the box, which explained the main functions clearly and offered up a big table of different foods with the best cooking mode, temperature and time. This makes it really easy to get cooking.

What helps the Cosori Dual Blaze Twinfry Compact stand out from the crowd however, is its four heating elements. Two above, and two below the basket, providing even heat above and below your food, for an improved cook.

FutureFutureFuture

You get six preset cooking modes too, with Air Fry, Roast, Grill, Bake, Reheat, and Dry - but there are no food-specific presets like you see on some air fryers.

I do like the button layout on this appliance, with clearly labelled buttons making it easy to select if you’re cooking on one side of the basket, or doing a large batch in the whole thing — Cosori calls this the 'grandzone'.

Temperature and time are easily adjusted with up and down arrow buttons, while the ‘match’ button can copy the settings from one side of the basket to the other, and sync allows you to cook two foods in each side of the basket for different durations, but have them finish at the same time by delaying the start of the side with the shorter time.

FutureFuture

There’s no shake reminder though, which is a small miss as you need to remember to shake or turn the food yourself. There’s also no window on the basket, so you can’t keep an eye on the food while it cooks, you have to remove the basket which pauses cooking.

When you come to remove the basket from the air fryer, the large handle that runs the full width of the basket makes it easy to grip and move around. Although, if you’ve loaded up the basket with food it can be heavy, so you’ll need to use both hands.

FutureFuture

Before you put any food in the air fryer for the first time though, you need to wash the basket and pop the air fryer through a test run. The manual says to run the Cosori Dual Blaze Twinfry Compact for five minutes at 200C (give the basket, divider and trays a quick wash first) to ensure it's working and to remove any residue on components. During this time it will smell a bit, but don’t worry as it’s doing what it needs to.

Cleaning is pretty easy too. The basket, divider and trays are all dishwasher safe, while you can also hand wash them with warm water, mild soap, and a non-abrasive sponge. The size of the basket does mean washing it in smaller kitchen sinks can be a touch tricky, but it’s not a huge issue.

  • Design score: 4.5/5
Cosori Dual Blaze Twinfry Compact: performance
  • Great results from air fry, bake, grill and roast modes
  • It takes time to fully understand the best temps and timings
  • Opt for shorter cook times, to avoid burning food

At 60dB (from my own tests), the fans on this air fryer are noisier than some, so you’ll be well aware that it’s on and cooking. It’s not loud enough to drown out conversation, but you might want to take a step or two away from it if you are chatting to someone.

Whenever I review a large basket air fryer one of my go-to first cooks is pizza. When I tested the Tower Elite 11 Litre Flexi Drawer I was able to fit a small circular pizza in the drawer. With the Cosori, the basket isn’t as big, nor as deep as the Tower, which means I had to slice my pizza in half to fit it in the basket.

@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-1788271156702-vxxdhr06v *, #fv-chart-1788271156702-vxxdhr06v *:before, #fv-chart-1788271156702-vxxdhr06v *:after, #fv-chart-1788271156702-vxxdhr06v-slideshow *, #fv-chart-1788271156702-vxxdhr06v-slideshow *:before, #fv-chart-1788271156702-vxxdhr06v-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1788271156702-vxxdhr06v, #fv-chart-1788271156702-vxxdhr06v-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1788271156702-vxxdhr06v {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1788271156702-vxxdhr06v.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1788271156702-vxxdhr06v.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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1788271156702-vxxdhr06v-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v-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-1788271156702-vxxdhr06v-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-1788271156702-vxxdhr06v-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-1788271156702-vxxdhr06v-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1788271156702-vxxdhr06v-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1788271156702-vxxdhr06v-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-1788271156702-vxxdhr06v-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-1788271156702-vxxdhr06v-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-1788271156702-vxxdhr06v-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271156702-vxxdhr06v .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1788271156702-vxxdhr06v .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1788271156702-vxxdhr06v.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1788271156702-vxxdhr06v .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1788271156702-vxxdhr06v .fv-image-compare-expand-btn, #fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-image-compare-expand-btn:hover, #fv-chart-1788271156702-vxxdhr06v .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1788271156702-vxxdhr06v .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1788271156702-vxxdhr06v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1788271156702-vxxdhr06v .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1788271156702-vxxdhr06v .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1788271156702-vxxdhr06v .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1788271156702-vxxdhr06v .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1788271156702-vxxdhr06v .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1788271156702-vxxdhr06v .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1788271156702-vxxdhr06v .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1788271156702-vxxdhr06v .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar-row, #fv-chart-1788271156702-vxxdhr06v .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271156702-vxxdhr06v.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1788271156702-vxxdhr06v.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1788271156702-vxxdhr06v .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1788271156702-vxxdhr06v .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1788271156702-vxxdhr06v .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1788271156702-vxxdhr06v .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1788271156702-vxxdhr06v .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1788271156702-vxxdhr06v .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1788271156702-vxxdhr06v .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1788271156702-vxxdhr06v .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1788271156702-vxxdhr06v .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1788271156702-vxxdhr06v .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v.mobile-view .fv-pie-container,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-row,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-stacked-product,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-grouped-bar-product,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-row,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-stacked-product,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1788271156702-vxxdhr06v.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-1788271156702-vxxdhr06v.mobile-view .fv-bar-label,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-grouped-product-title,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-label,#fv-chart-1788271156702-vxxdhr06v.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-1788271156702-vxxdhr06v.mobile-view .fv-bar-container,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-cluster,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-container,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271156702-vxxdhr06v.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-1788271156702-vxxdhr06v.mobile-view .fv-x-axis-wrapper,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-x-axis-label-space,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-x-axis-chart-space,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-benchmark-title,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-dropdown-title,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-carousel-nav-btn,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-chart-title,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-chart-subhead,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-header,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select-wrapper,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-vs,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select-container,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-versus-select,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-stl-shop-all-btn,#fv-chart-1788271156702-vxxdhr06v.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-1788271156702-vxxdhr06v.mobile-view .fv-stl-shop-all-logo,#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-stl-shop-all-icon,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271156702-vxxdhr06v.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1788271156702-vxxdhr06v .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271156702-vxxdhr06v .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-bar-row,#fv-chart-1788271156702-vxxdhr06v .fv-stacked-product,#fv-chart-1788271156702-vxxdhr06v .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar-label,#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-bar-container,#fv-chart-1788271156702-vxxdhr06v .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271156702-vxxdhr06v .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271156702-vxxdhr06v .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271156702-vxxdhr06v .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271156702-vxxdhr06v .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271156702-vxxdhr06v .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271156702-vxxdhr06v .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v .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-1788271156702-vxxdhr06v .fv-stl-shop-all-logo,#fv-chart-1788271156702-vxxdhr06v .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271156702-vxxdhr06v .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271156702-vxxdhr06v .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271156702-vxxdhr06v .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271156702-vxxdhr06v.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Round pizza","description": "Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-01T13:59:16.703Z","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": []}Round pizza

Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1788271156702-vxxdhr06v', false); });} else {initialize('fv-chart-1788271156702-vxxdhr06v', false);}})();

This wasn’t an issue as it was a fresh pie, but had I purchased a frozen pizza I wouldn’t have been able to cook it in this air fryer. I selected air fry mode, set the temperature to 180C and the time to eight minutes.

After six minutes the pizza was done, with a crispy base and melted cheese making for a satisfying lunch. I returned a few days later with an oval pizza that I could easily fit in the basket. Another six minutes at 180C and again I had a nicely cooked pizza. It’s quicker and easier than using the oven.

@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-1788271335574-v8f79gp7j *, #fv-chart-1788271335574-v8f79gp7j *:before, #fv-chart-1788271335574-v8f79gp7j *:after, #fv-chart-1788271335574-v8f79gp7j-slideshow *, #fv-chart-1788271335574-v8f79gp7j-slideshow *:before, #fv-chart-1788271335574-v8f79gp7j-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1788271335574-v8f79gp7j, #fv-chart-1788271335574-v8f79gp7j-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1788271335574-v8f79gp7j {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1788271335574-v8f79gp7j.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1788271335574-v8f79gp7j.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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1788271335574-v8f79gp7j-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j-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-1788271335574-v8f79gp7j-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-1788271335574-v8f79gp7j-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-1788271335574-v8f79gp7j-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1788271335574-v8f79gp7j-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1788271335574-v8f79gp7j-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-1788271335574-v8f79gp7j-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-1788271335574-v8f79gp7j-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-1788271335574-v8f79gp7j-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271335574-v8f79gp7j .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1788271335574-v8f79gp7j .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1788271335574-v8f79gp7j.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1788271335574-v8f79gp7j .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1788271335574-v8f79gp7j .fv-image-compare-expand-btn, #fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-image-compare-expand-btn:hover, #fv-chart-1788271335574-v8f79gp7j .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1788271335574-v8f79gp7j .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1788271335574-v8f79gp7j .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1788271335574-v8f79gp7j .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1788271335574-v8f79gp7j .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1788271335574-v8f79gp7j .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1788271335574-v8f79gp7j .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1788271335574-v8f79gp7j .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1788271335574-v8f79gp7j .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1788271335574-v8f79gp7j .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1788271335574-v8f79gp7j .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar-row, #fv-chart-1788271335574-v8f79gp7j .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271335574-v8f79gp7j.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1788271335574-v8f79gp7j.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1788271335574-v8f79gp7j .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1788271335574-v8f79gp7j .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1788271335574-v8f79gp7j .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1788271335574-v8f79gp7j .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1788271335574-v8f79gp7j .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1788271335574-v8f79gp7j .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1788271335574-v8f79gp7j .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1788271335574-v8f79gp7j .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1788271335574-v8f79gp7j .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1788271335574-v8f79gp7j .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j.mobile-view .fv-pie-container,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-row,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-stacked-product,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-grouped-bar-product,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-row,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-stacked-product,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1788271335574-v8f79gp7j.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-1788271335574-v8f79gp7j.mobile-view .fv-bar-label,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-grouped-product-title,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-label,#fv-chart-1788271335574-v8f79gp7j.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-1788271335574-v8f79gp7j.mobile-view .fv-bar-container,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-cluster,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-container,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271335574-v8f79gp7j.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-1788271335574-v8f79gp7j.mobile-view .fv-x-axis-wrapper,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-x-axis-label-space,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-x-axis-chart-space,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-benchmark-title,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-dropdown-title,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-carousel-nav-btn,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-chart-title,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-chart-subhead,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-header,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select-wrapper,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-vs,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select-container,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-versus-select,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-stl-shop-all-btn,#fv-chart-1788271335574-v8f79gp7j.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-1788271335574-v8f79gp7j.mobile-view .fv-stl-shop-all-logo,#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-stl-shop-all-icon,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271335574-v8f79gp7j.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1788271335574-v8f79gp7j .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271335574-v8f79gp7j .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-bar-row,#fv-chart-1788271335574-v8f79gp7j .fv-stacked-product,#fv-chart-1788271335574-v8f79gp7j .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar-label,#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-bar-container,#fv-chart-1788271335574-v8f79gp7j .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271335574-v8f79gp7j .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271335574-v8f79gp7j .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271335574-v8f79gp7j .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271335574-v8f79gp7j .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271335574-v8f79gp7j .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271335574-v8f79gp7j .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j .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-1788271335574-v8f79gp7j .fv-stl-shop-all-logo,#fv-chart-1788271335574-v8f79gp7j .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271335574-v8f79gp7j .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271335574-v8f79gp7j .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271335574-v8f79gp7j .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271335574-v8f79gp7j.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Frozen fries","description": "Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-01T14:02:15.575Z","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": []}Frozen fries

Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1788271335574-v8f79gp7j', false); });} else {initialize('fv-chart-1788271335574-v8f79gp7j', false);}})();

I was also able to air fry a large batch of delicious homemade fries (200C for 20 minutes), that came out wonderfully crispy on the outside while remaining fluffy in the middle.

Frozen fries come out equally as well, with the same temperature and duration as their homemade counterparts to achieve a similar cook. The adjustment I made when I came to cook fries again was to reduce the time by a couple of minutes, to avoid the outside of the fries being quite so well done.

@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-1788271525057-ywgqsi998 *, #fv-chart-1788271525057-ywgqsi998 *:before, #fv-chart-1788271525057-ywgqsi998 *:after, #fv-chart-1788271525057-ywgqsi998-slideshow *, #fv-chart-1788271525057-ywgqsi998-slideshow *:before, #fv-chart-1788271525057-ywgqsi998-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1788271525057-ywgqsi998, #fv-chart-1788271525057-ywgqsi998-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1788271525057-ywgqsi998 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1788271525057-ywgqsi998.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1788271525057-ywgqsi998.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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1788271525057-ywgqsi998-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1788271525057-ywgqsi998-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-1788271525057-ywgqsi998-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-1788271525057-ywgqsi998-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-1788271525057-ywgqsi998-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1788271525057-ywgqsi998-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1788271525057-ywgqsi998-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-1788271525057-ywgqsi998-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-1788271525057-ywgqsi998-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-1788271525057-ywgqsi998-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271525057-ywgqsi998 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1788271525057-ywgqsi998 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1788271525057-ywgqsi998.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1788271525057-ywgqsi998 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1788271525057-ywgqsi998 .fv-image-compare-expand-btn, #fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-image-compare-expand-btn:hover, #fv-chart-1788271525057-ywgqsi998 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1788271525057-ywgqsi998 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1788271525057-ywgqsi998 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1788271525057-ywgqsi998 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1788271525057-ywgqsi998 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1788271525057-ywgqsi998 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1788271525057-ywgqsi998 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1788271525057-ywgqsi998 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1788271525057-ywgqsi998 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1788271525057-ywgqsi998 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1788271525057-ywgqsi998 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar-row, #fv-chart-1788271525057-ywgqsi998 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271525057-ywgqsi998.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1788271525057-ywgqsi998.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1788271525057-ywgqsi998 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1788271525057-ywgqsi998 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1788271525057-ywgqsi998 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1788271525057-ywgqsi998 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1788271525057-ywgqsi998 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1788271525057-ywgqsi998 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1788271525057-ywgqsi998 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1788271525057-ywgqsi998 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1788271525057-ywgqsi998 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1788271525057-ywgqsi998 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998.mobile-view .fv-pie-container,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-row,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-stacked-product,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-grouped-bar-product,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-row,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-stacked-product,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1788271525057-ywgqsi998.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-1788271525057-ywgqsi998.mobile-view .fv-bar-label,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-grouped-product-title,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-label,#fv-chart-1788271525057-ywgqsi998.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-1788271525057-ywgqsi998.mobile-view .fv-bar-container,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-cluster,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-container,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271525057-ywgqsi998.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-1788271525057-ywgqsi998.mobile-view .fv-x-axis-wrapper,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-x-axis-label-space,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-x-axis-chart-space,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-benchmark-title,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-dropdown-title,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-carousel-nav-btn,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-chart-title,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-chart-subhead,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-header,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select-wrapper,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-vs,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select-container,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-versus-select,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-stl-shop-all-btn,#fv-chart-1788271525057-ywgqsi998.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-1788271525057-ywgqsi998.mobile-view .fv-stl-shop-all-logo,#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-stl-shop-all-icon,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271525057-ywgqsi998.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1788271525057-ywgqsi998 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271525057-ywgqsi998 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-bar-row,#fv-chart-1788271525057-ywgqsi998 .fv-stacked-product,#fv-chart-1788271525057-ywgqsi998 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar-label,#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-bar-container,#fv-chart-1788271525057-ywgqsi998 .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271525057-ywgqsi998 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271525057-ywgqsi998 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271525057-ywgqsi998 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271525057-ywgqsi998 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271525057-ywgqsi998 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271525057-ywgqsi998 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271525057-ywgqsi998 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998 .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-1788271525057-ywgqsi998 .fv-stl-shop-all-logo,#fv-chart-1788271525057-ywgqsi998 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271525057-ywgqsi998 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271525057-ywgqsi998 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271525057-ywgqsi998 .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271525057-ywgqsi998.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Chicken wings","description": "Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-01T14:05:25.057Z","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": []}Chicken wings

Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1788271525057-ywgqsi998', false); });} else {initialize('fv-chart-1788271525057-ywgqsi998', false);}})();

Chicken wings, coated in a buffalo ranch rub, came out with wonderfully crispy skin and succulent meat after 20 minutes at 185C.

I was able to fit eight full size wings in the basket, and I might have been able to squeeze one or two more in if I bunch them up a bit, but I didn't want to compromise the cook.

While they were very good, they weren't quite as moist inside as the wings I steam fried in the Philips 5000 series.

@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-1788271057019-cmqph08f6 *, #fv-chart-1788271057019-cmqph08f6 *:before, #fv-chart-1788271057019-cmqph08f6 *:after, #fv-chart-1788271057019-cmqph08f6-slideshow *, #fv-chart-1788271057019-cmqph08f6-slideshow *:before, #fv-chart-1788271057019-cmqph08f6-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1788271057019-cmqph08f6, #fv-chart-1788271057019-cmqph08f6-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1788271057019-cmqph08f6 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1788271057019-cmqph08f6.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1788271057019-cmqph08f6.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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1788271057019-cmqph08f6-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1788271057019-cmqph08f6-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-1788271057019-cmqph08f6-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-1788271057019-cmqph08f6-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-1788271057019-cmqph08f6-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1788271057019-cmqph08f6-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1788271057019-cmqph08f6-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-1788271057019-cmqph08f6-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-1788271057019-cmqph08f6-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-1788271057019-cmqph08f6-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271057019-cmqph08f6 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1788271057019-cmqph08f6 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1788271057019-cmqph08f6.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1788271057019-cmqph08f6 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1788271057019-cmqph08f6 .fv-image-compare-expand-btn, #fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-image-compare-expand-btn:hover, #fv-chart-1788271057019-cmqph08f6 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1788271057019-cmqph08f6 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1788271057019-cmqph08f6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1788271057019-cmqph08f6 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1788271057019-cmqph08f6 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1788271057019-cmqph08f6 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1788271057019-cmqph08f6 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1788271057019-cmqph08f6 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1788271057019-cmqph08f6 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1788271057019-cmqph08f6 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1788271057019-cmqph08f6 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar-row, #fv-chart-1788271057019-cmqph08f6 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271057019-cmqph08f6.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1788271057019-cmqph08f6.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1788271057019-cmqph08f6 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1788271057019-cmqph08f6 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1788271057019-cmqph08f6 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1788271057019-cmqph08f6 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1788271057019-cmqph08f6 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1788271057019-cmqph08f6 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1788271057019-cmqph08f6 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1788271057019-cmqph08f6 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1788271057019-cmqph08f6 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1788271057019-cmqph08f6 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6.mobile-view .fv-pie-container,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-row,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-stacked-product,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-grouped-bar-product,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-row,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-stacked-product,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1788271057019-cmqph08f6.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-1788271057019-cmqph08f6.mobile-view .fv-bar-label,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-grouped-product-title,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-label,#fv-chart-1788271057019-cmqph08f6.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-1788271057019-cmqph08f6.mobile-view .fv-bar-container,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-cluster,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-container,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271057019-cmqph08f6.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-1788271057019-cmqph08f6.mobile-view .fv-x-axis-wrapper,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-x-axis-label-space,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-x-axis-chart-space,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-benchmark-title,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-dropdown-title,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-carousel-nav-btn,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-chart-title,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-chart-subhead,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-header,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select-wrapper,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-vs,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select-container,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-versus-select,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-stl-shop-all-btn,#fv-chart-1788271057019-cmqph08f6.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-1788271057019-cmqph08f6.mobile-view .fv-stl-shop-all-logo,#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-stl-shop-all-icon,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271057019-cmqph08f6.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1788271057019-cmqph08f6 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271057019-cmqph08f6 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-bar-row,#fv-chart-1788271057019-cmqph08f6 .fv-stacked-product,#fv-chart-1788271057019-cmqph08f6 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar-label,#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-bar-container,#fv-chart-1788271057019-cmqph08f6 .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271057019-cmqph08f6 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271057019-cmqph08f6 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271057019-cmqph08f6 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271057019-cmqph08f6 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271057019-cmqph08f6 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271057019-cmqph08f6 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271057019-cmqph08f6 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6 .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-1788271057019-cmqph08f6 .fv-stl-shop-all-logo,#fv-chart-1788271057019-cmqph08f6 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271057019-cmqph08f6 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271057019-cmqph08f6 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271057019-cmqph08f6 .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271057019-cmqph08f6.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Cookie cup","description": "Baked using Cosori Dual Blaze Twinfry Compact Air Fryer ","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-01T13:57:37.019Z","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": []}Cookie cup

Baked using Cosori Dual Blaze Twinfry Compact Air Fryer

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1788271057019-cmqph08f6', false); });} else {initialize('fv-chart-1788271057019-cmqph08f6', false);}})();

I also tried a Marks & Spencer cookie cup, currently doing the rounds on social in the UK as a must-try air fryer treat. I went for the Smores Cookie cup, and after 10 minutes in zone 1 (the left side of the basket) at 160C I got a cup that oozed chocolate topped with nicely toasted marshmallows.

And while we’re on the subject of sweet treats, the bake mode was another favorite of mine, with the Cosori Dual Blaze Twinfry Compact capable of excellent results. I cooked a simple banana bread in the grandzone for 25 minutes at 160C, and a further 20 minutes at 140C.

It rose wonderfully, and delivered an excellent bake that was soft, fluffy and flavourful. I also whipped up a batch of cookies, and on the bake mode for eight minutes at 175C I was treated to gooey-centered delights with a crispy exterior. The cook on them wasn't quite as impressive as the more premium Philips 5000 series I had recently tested, but they were still tasty.

@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-1788271075148-y266ykbz0 *, #fv-chart-1788271075148-y266ykbz0 *:before, #fv-chart-1788271075148-y266ykbz0 *:after, #fv-chart-1788271075148-y266ykbz0-slideshow *, #fv-chart-1788271075148-y266ykbz0-slideshow *:before, #fv-chart-1788271075148-y266ykbz0-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1788271075148-y266ykbz0, #fv-chart-1788271075148-y266ykbz0-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1788271075148-y266ykbz0 {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1788271075148-y266ykbz0.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1788271075148-y266ykbz0.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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1788271075148-y266ykbz0-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1788271075148-y266ykbz0-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-1788271075148-y266ykbz0-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-1788271075148-y266ykbz0-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-1788271075148-y266ykbz0-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1788271075148-y266ykbz0-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1788271075148-y266ykbz0-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-1788271075148-y266ykbz0-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-1788271075148-y266ykbz0-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-1788271075148-y266ykbz0-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271075148-y266ykbz0 .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1788271075148-y266ykbz0 .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1788271075148-y266ykbz0.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1788271075148-y266ykbz0 .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1788271075148-y266ykbz0 .fv-image-compare-expand-btn, #fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-image-compare-expand-btn:hover, #fv-chart-1788271075148-y266ykbz0 .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1788271075148-y266ykbz0 .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1788271075148-y266ykbz0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1788271075148-y266ykbz0 .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1788271075148-y266ykbz0 .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1788271075148-y266ykbz0 .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1788271075148-y266ykbz0 .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1788271075148-y266ykbz0 .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1788271075148-y266ykbz0 .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1788271075148-y266ykbz0 .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1788271075148-y266ykbz0 .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar-row, #fv-chart-1788271075148-y266ykbz0 .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271075148-y266ykbz0.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1788271075148-y266ykbz0.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1788271075148-y266ykbz0 .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1788271075148-y266ykbz0 .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1788271075148-y266ykbz0 .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1788271075148-y266ykbz0 .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1788271075148-y266ykbz0 .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1788271075148-y266ykbz0 .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1788271075148-y266ykbz0 .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1788271075148-y266ykbz0 .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1788271075148-y266ykbz0 .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1788271075148-y266ykbz0 .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0.mobile-view .fv-pie-container,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-row,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-stacked-product,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-grouped-bar-product,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-row,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-stacked-product,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1788271075148-y266ykbz0.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-1788271075148-y266ykbz0.mobile-view .fv-bar-label,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-grouped-product-title,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-label,#fv-chart-1788271075148-y266ykbz0.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-1788271075148-y266ykbz0.mobile-view .fv-bar-container,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-cluster,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-container,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271075148-y266ykbz0.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-1788271075148-y266ykbz0.mobile-view .fv-x-axis-wrapper,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-x-axis-label-space,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-x-axis-chart-space,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-benchmark-title,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-dropdown-title,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-carousel-nav-btn,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-chart-title,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-chart-subhead,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-header,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select-wrapper,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-vs,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select-container,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-versus-select,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-stl-shop-all-btn,#fv-chart-1788271075148-y266ykbz0.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-1788271075148-y266ykbz0.mobile-view .fv-stl-shop-all-logo,#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-stl-shop-all-icon,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271075148-y266ykbz0.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1788271075148-y266ykbz0 .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271075148-y266ykbz0 .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-bar-row,#fv-chart-1788271075148-y266ykbz0 .fv-stacked-product,#fv-chart-1788271075148-y266ykbz0 .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar-label,#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-bar-container,#fv-chart-1788271075148-y266ykbz0 .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271075148-y266ykbz0 .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0 .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271075148-y266ykbz0 .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271075148-y266ykbz0 .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271075148-y266ykbz0 .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271075148-y266ykbz0 .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271075148-y266ykbz0 .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271075148-y266ykbz0 .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0 .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0 .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-1788271075148-y266ykbz0 .fv-stl-shop-all-logo,#fv-chart-1788271075148-y266ykbz0 .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271075148-y266ykbz0 .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271075148-y266ykbz0 .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271075148-y266ykbz0 .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271075148-y266ykbz0.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Banana bread","description": "Baked using Cosori Dual Blaze Twinfry Compact Air Fryer","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-01T13:57:55.148Z","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": []}Banana bread

Baked using Cosori Dual Blaze Twinfry Compact Air Fryer

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1788271075148-y266ykbz0', false); });} else {initialize('fv-chart-1788271075148-y266ykbz0', false);}})();

The roast mode is also a useful addition. I was able to cook fluffy roast potatoes (with a reasonably crispy exterior) in less time, and using less power than my oven. And there was no need to par boil them either.

I cooked them for 25 minutes at 200C using the roast mode, and while you'll get crispier results using an oven, the Cosori is a great option when you're looking for faster results.

I roasted the potatoes alongside broccoli and sprouts, using the divider so the vegetables could be cooked for 15 minutes at 190C (per Cosori’s own instructions).

This turned out to be too long, as after 10 minutes they were already overcooked. An example of the initial trial and error required when understanding a new air fryer. However, for chunkier veg — such as carrots and parsnips - this setting works much better.

One of the slightly more unusual cooking modes available here is grill, but it works surprisingly well. I tested it out with four beef burgers, with the quick start guide that came with the air fryer suggesting I cook them for 11 minutes at 230C.

I was initially worried when I pulled them out at the end that they could be overcooked, but I was happy to find they were still juicy in the middle. You wouldn’t know it was the work of an air fryer rather than a traditional grill, and it was incredibly easy to do.

If you are someone who grills a lot, the Cosori Dual Blaze Twinfry Compact can replace your traditional grill, as well as being a strong air fryer and baking machine.

@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-1788271591488-osbwlk6no *, #fv-chart-1788271591488-osbwlk6no *:before, #fv-chart-1788271591488-osbwlk6no *:after, #fv-chart-1788271591488-osbwlk6no-slideshow *, #fv-chart-1788271591488-osbwlk6no-slideshow *:before, #fv-chart-1788271591488-osbwlk6no-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1788271591488-osbwlk6no, #fv-chart-1788271591488-osbwlk6no-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1788271591488-osbwlk6no {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1788271591488-osbwlk6no.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1788271591488-osbwlk6no.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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1788271591488-osbwlk6no-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1788271591488-osbwlk6no-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-1788271591488-osbwlk6no-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-1788271591488-osbwlk6no-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-1788271591488-osbwlk6no-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1788271591488-osbwlk6no-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1788271591488-osbwlk6no-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-1788271591488-osbwlk6no-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-1788271591488-osbwlk6no-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-1788271591488-osbwlk6no-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1788271591488-osbwlk6no .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1788271591488-osbwlk6no .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1788271591488-osbwlk6no .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1788271591488-osbwlk6no .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1788271591488-osbwlk6no .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1788271591488-osbwlk6no .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1788271591488-osbwlk6no .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271591488-osbwlk6no .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1788271591488-osbwlk6no .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1788271591488-osbwlk6no .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-image-compare-container { width: auto !important; margin-left: -1.5rem !important; margin-right: -1.5rem !important; margin-bottom: 2rem !important; }#fv-chart-1788271591488-osbwlk6no.fv-full-bleed .fv-image-compare-container { width: 100% !important; max-width: none !important; margin: 0 auto !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-image-compare-handle.fv-image-compare-handle-square { border-radius: 6px !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-image-compare-label-left { left: 1rem !important; }#fv-chart-1788271591488-osbwlk6no .fv-image-compare-label-right { right: 1rem !important; }#fv-chart-1788271591488-osbwlk6no .fv-image-compare-expand-btn, #fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-image-compare-expand-btn:hover, #fv-chart-1788271591488-osbwlk6no .fv-image-compare-close-btn:hover { background-color: rgba(0, 0, 0, 0.7) !important; }#fv-chart-1788271591488-osbwlk6no .fv-image-compare-close-btn { display: none !important; top: 1rem !important; bottom: auto !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-inner:active { cursor: grabbing !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-expand-btn { display: none !important; }#fv-chart-1788271591488-osbwlk6no .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-close-btn { display: flex !important; }#fv-chart-1788271591488-osbwlk6no .fv-image-compare-wrapper.fv-image-compare-fullscreen .fv-image-compare-label-right { right: 4rem !important; }#fv-chart-1788271591488-osbwlk6no .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1788271591488-osbwlk6no .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1788271591488-osbwlk6no .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1788271591488-osbwlk6no .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1788271591488-osbwlk6no .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1788271591488-osbwlk6no .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1788271591488-osbwlk6no .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar-row, #fv-chart-1788271591488-osbwlk6no .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271591488-osbwlk6no.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1788271591488-osbwlk6no.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1788271591488-osbwlk6no .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1788271591488-osbwlk6no .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1788271591488-osbwlk6no .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1788271591488-osbwlk6no .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1788271591488-osbwlk6no .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1788271591488-osbwlk6no .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1788271591488-osbwlk6no .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1788271591488-osbwlk6no .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1788271591488-osbwlk6no .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1788271591488-osbwlk6no .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1788271591488-osbwlk6no .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1788271591488-osbwlk6no .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1788271591488-osbwlk6no .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1788271591488-osbwlk6no .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1788271591488-osbwlk6no .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no.mobile-view .fv-pie-container,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-row,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-stacked-product,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-grouped-bar-product,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-row,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-stacked-product,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1788271591488-osbwlk6no.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-1788271591488-osbwlk6no.mobile-view .fv-bar-label,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-grouped-product-title,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-label,#fv-chart-1788271591488-osbwlk6no.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-1788271591488-osbwlk6no.mobile-view .fv-bar-container,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-cluster,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-container,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271591488-osbwlk6no.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-1788271591488-osbwlk6no.mobile-view .fv-x-axis-wrapper,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-x-axis-label-space,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-x-axis-chart-space,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-benchmark-title,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-dropdown-title,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-carousel-nav-btn,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-chart-title,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-chart-subhead,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-header,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select-wrapper,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-vs,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select-container,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-versus-select,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-stl-shop-all-btn,#fv-chart-1788271591488-osbwlk6no.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-1788271591488-osbwlk6no.mobile-view .fv-stl-shop-all-logo,#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-stl-shop-all-icon,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271591488-osbwlk6no.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1788271591488-osbwlk6no .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1788271591488-osbwlk6no .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1788271591488-osbwlk6no .fv-bar-row,#fv-chart-1788271591488-osbwlk6no .fv-stacked-product,#fv-chart-1788271591488-osbwlk6no .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar-label,#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-bar-container,#fv-chart-1788271591488-osbwlk6no .fv-bar-cluster {width: 100% !important;}#fv-chart-1788271591488-osbwlk6no .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1788271591488-osbwlk6no .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1788271591488-osbwlk6no .fv-x-axis-label-space {display: none !important;}#fv-chart-1788271591488-osbwlk6no .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1788271591488-osbwlk6no .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1788271591488-osbwlk6no .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1788271591488-osbwlk6no .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1788271591488-osbwlk6no .fv-chart-title {padding: 0 8px !important;}#fv-chart-1788271591488-osbwlk6no .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no .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-1788271591488-osbwlk6no .fv-stl-shop-all-logo,#fv-chart-1788271591488-osbwlk6no .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1788271591488-osbwlk6no .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1788271591488-osbwlk6no .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1788271591488-osbwlk6no .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1788271591488-osbwlk6no.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}{"@context": "https://schema.org","@type": "Dataset","name": "Burgers","description": "Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-09-01T14:06:31.489Z","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": []}Burgers

Cooked using Cosori Dual Blaze Twinfry Compact Air Fryer

BeforeAfterwindow.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (false) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1788271591488-osbwlk6no', false); });} else {initialize('fv-chart-1788271591488-osbwlk6no', false);}})();

Something I did notice was you want to lean towards the shorter end of cooking times, because if forget about the air fryer, or set the timer for the higher end of a cooking range, you might find food gets a little cremated.

This is all part of the air fryer ownership journey, and during the first couple of weeks you’ll need to spend some time closely monitoring how quickly food is cooking to get a better understanding of the performance.

The lack of a shake reminder means it’s easier to forget about checking how your food is getting. But don’t let this put you off. All air fryers come with this learning curve, and with the Cosori Dual Blaze Twinfry Compact less tends to be more when it comes to cooking duration.

  • Performance score: 4.5/5
Should you buy the Cosori Dual Blaze Twinfry Compact?Report card

Attribute

Notes

Rating

Value

There’s great versatility here, with the bake and grill modes excellent additions alongside air fry. And with deals to be had, you can probably get it for less than RRP is you shop around.

4.5/5

Design

A slick design that looks smart on the kitchen counter, so long as you have space for this wide machine. Buttons are well laid out, the basket divider allows two different foods to be cooked together, and the quick start guide is packed with useful info.

4.5/5

Performance

The Cosori Dual Blaze Twinfry Compact delivers consistent results across air fry, bake, grill and roast modes. You will need to keep an eye on things and adjust timings to suit your needs, but once you’ve mastered this you’ll be happy with the results.

4.5/5

Buy it if

You love big basket flexibility

The big basket on the Cosori Dual Blaze Twinfry Compact can fit plenty of food in it. Whether it’s a large joint of meat, or a smaller main and a side split by the divider and cooked at different temps, you can do it with this air fryer.

You want more than just an air fryer

With impressive bake, roast and grill modes, the Cosori Dual Blaze Twinfry Compact can handle more than just simple air frying. You could reduce the number of appliances in your kitchen.

You don’t want to spend loads

WIth an already reasonable price tag, and with discounts to be had if you shop around, the Cosori Dual Blaze Twinfry Compact delivers great versatility and features for the price. You can spend more on premium rivals from Philips and Ninja, but aside from sleeker designs and food presets, the difference it’s overly great.

Don’t buy it if

You’re forgetful

There’s no shake reminder here, nor is there a window in the basket, which means you really need to remember to check how your food is cooking. Otherwise you might end up with over cooked items, or uneven cooking if you forget to flip, turn, or shake the food in the basket.

You have limited counter space

Due to the sizable basket of this air fryer, you’re looking at a wide footprint. For kitchens that have limited space on counters, this Cosori might be too big for your setup. Consider a smaller basket air fryer, or a stacked offering that reduces the footprint required.

You want a quiet air fryer

The Cosori Dual Blaze Twinfry Compact isn’t obnoxiously loud, but it is noisier than some other air fryers. If you want a quieter machine, you’ll be best off looking elsewhere.

Cosori Dual Blaze Twinfry Compact: also consider

Tower Elite 11 Litre Flexi Drawer

This air fryer has an even bigger basket, and a lower price tag, making it an excellent choice for families on a budget. Its controls aren’t as intuitive, and the basket is handwash only, but results are still good.

For more information, check out our full Tower Elite 11 Litre Flexi Drawer review

Philips 5000 Series Megabasket with Steam Air Fryer

If your budget can stretch to a premium model, this Philips large-basket air fryer also offers a great array of cooking modes, including an impressive steam function that’s made some of the best chicken wings I’ve ever had.

For more information, check out our full Philips 5000 Series Megabasket with Steam review

How I tested the Cosori Dual Blaze Twinfry Compact
  • I used the Cosori Dual Blaze Twinfry Compact for multiple weeks in my kitchen
  • I cooked a variety of food, including fries, cakes, vegetables, pizza and meat
  • I tested the various cooking modes, and the cleaning process

For my review of the Cosori Dual Blaze Twinfry Compact Air Fryer, I used it for a number of weeks at home, cooking a wide variety of food and testing out the various functions.

I baked cakes and cookies, air fried fries, chicken wings and pizza, roasted potatoes and vegetables, and grilled kebabs and burgers. I even reheated leftover pizza the next day - which was sensational on a slight hangover.

I also hand-washed the components, and ran them through a dishwasher, to ensure cleaning and maintenance was easy.

First reviewed September 2026

Categories: Reviews

Dyson CameraJet review: This game-changing toothbrush offers liquid flossing, precision-brushing and a camera that doubles as a dental endoscope — I tried it for a week

Tue, 09/01/2026 - 04:33
Dyson CameraJet: One minute review

As the only toothbrush and water flosser with a built-in 100k pixel macro lens camera, the CameraJet offers something unique. It’s designed to identify gaps in the teeth and precision floss as you brush and gently blast away at plaque for a thorough clean. The Dyson CameraJet was unveiled by its founder and chief engineer James Dyson in Paris on Tuesday 1 September, and I’ve been using it for a week prior to launch. I was keen to see if its impressive spec could change the way I brush, and see, my teeth. While I’m still getting to grips with how to get the best from its settings and perfect my brushing technique, so far I’ve been enjoying the results and it may well make it onto our best electric toothbrush list.

At £419.99 (US $568 / AUS $794) for the set including a charging dock, travel case, Dyson Toothpaste and Dyson Mouthrinse, there’s no denying that this mouth-watering set comes at an eye-watering price.

You can already find AI/smart toothbrushes with sensors, smart apps and voice guidance available online from the likes of Oclean, Philips, Oral-B or Feno, of course, but none of these have a built-in endoscopic camera like the Dyson CameraJet, or include such an array of promising tech. I’ve tried water flossers in the past, but none that seem so mindfully designed.

The CameraJet provides a live-view the inside of your mouth, which you can view on the accompanying MyDyson app on your smartphone. This allows you to see where you’re cleaning, where you need to brush and how you can improve brushing and flossing. Having a toothbrush with built-in Wi-Fi camera in the bathroom does make me feel a little uneasy, but Dyson assures me that no images are recorded or stored on the product or in the cloud, and images remain private to the user.

At the time of writing, the companion MyDyson CameraJet app has only just gone live, so i’ve only used the live-view feature for a few guided brushing sessions. But the picture quality is clear, even if all I can see is a sea of gum, teeth and bubbles, and it streams with no lag, which is very impressive. I’ll be interested to see what personalised oral care insights it gathers in the coming days.

The CameraJet’s built-in anti-gravity mouthrinse tank makes its cordless design bulkier than your standard electric toothbrush, but I’ve found it comfortable to handle and control. I also like that it’s cordless unlike some water flossers, and you can use it in multiple directions in your mouth. However, if I don’t close my mouth properly, it splashes my mirror unapologetically while in auto-jet flossing mode.

The dual-bristle brush feels a nice size against my teeth and it glides along the contours with a satisfying pressure and firmness. Its variable sonic oscillation technology keeps the brush in constant motion to make it easier to get hard to reach areas without the brush stalling. It’s easy to refill and charge on its dedicated stand too.

What makes the Dyson CameraJet seemingly effective when blasting mouthrinse at plaque is its broad conical shaped spray that provides wide coverage. It took me a while to get used to the feel of the jet spray as it tickled every tooth. But with a slow and steady pace I was able to improve my brushing and flossing technique every time to get the best from the CameraJet, even if I couldn’t see myself in the bathroom mirror afterwards.

Dyson CameraJet: Specifications

Price

£419.99 / around $568 and $792 AUD)

Camera

100k pixel macro lens camera

Smart connectivity

Wi-Fi at 2.4GHz and Bluetooth connected

Colorways

Ceramic Ultra Blue and Ceramic Pink

Dimensions

L 273mm x W 44mm x D 44mm

Dyson CameraJet: Price and availability

(Image credit: Future / Emily Peck)
  • £419.99 (around $568 and $792 AUD)
  • Available in Ceramic Ultra Blue or Ceramic Pink colorways
  • For use with 75ml tube of Dyson Toothpaste and 400ml bottle of Dyson Mouthrinse

At the time of writing, the mouth-watering Dyson CameraJet costs £419.99 (around $568 and $792 AUD). This includes the colour choice of either Ceramic Ultra Blue or Ceramic Pink, and comes in a set including a charging dock, travel case, 75ml tube of Dyson Toothpaste and 400ml bottle of Dyson Mouthrinse.

While oral care may be a far cry from Dyson’s floorcare and air purifying categories, I think the CameraJet aligns mindfully with Dyson’s growing portfolio of tech beauty products. If you already own the game-changing Dyson Supersonic hair dryer and new Dyson Co-anda2x complete with new attachments, buying the CameraJet may just feel like a natural next step, but you will need to take the hit of its high-end price.

Just as Dyson has complemented its beauty tools with hair products such as its Chitosan styling range, Dyson has also formulated its special Dyson toothpaste and mouthwash formula. These are optimised to be non-foaming so the camera can see clearly while you brush. A 400ml bottle of mouthrinse that dispenses the precise 12.5ml should last around 32 brushes – if you’re using the mouthrinse twice daily that gives you around 16 days before having to refill. A set of two brush heads costs £25, while the Dyson toothpaste and mouthrinse are £8.49 ($11.50 / AUS $16 each.

The toothbrush heads will need to be replaced every three months. The brushes are RFID enabled, so you’ll get an alert on the app when it’s time to change them.

  • Value score: 3.5/5
Dyson CameraJet: Design

(Image credit: Future / Emily Peck)
  • Dual-bristle brush head to contour teeth
  • Powerful sonic motor oscillates 245 times a second to help remove plaque
  • WiFi enabled at 2.4 GHz with Bluetooth connectivity, designed to work with companion smart app

With its built-in camera, conical jet, flexible control pad, feature-packed app and luxurious pink or blue styling, the Dyson CameraJet design looks and feels premium.

It comes presented in a Dyson-branded cardboard box with a refill dock, USB-C charger and two dual-bristle brush heads with plastic case. There’s no carry bag in the box, but I think this would make a nice addition if you’re travelling with it.

You also get a Dyson mouthrinse and non-foaming toothpaste, which contains sodium fluoride to help fortify enamel and strengthen teeth.Both the toothpaste and mouthrinse taste agreeable, and are quite subtle in minty-ness.

It takes eight hours to recharge the brush fully on the refill dock that takes a USB-C. Battery should last for eight hours, but this all depends on how long you use it for, and which settings you choose.

To set up you can either pour the mouthrinse into the refill dock or straight into the CameraJet tank. I poured three quarters of my 400ml mouthrinse bottle into the refill doc, so that I could fill up the mouthrinse tank on the CameraJet after each use simply by pressing a button on the dock. To clean the brush after use, I simply rinsed its brush head, ran the tank under water and allowed the brush to dry while on the dock.

The 100k pixel macro lens camera is built into the design just below the brush head. What makes the camera accurate in its jet sprays while flossing – so you’re not just blinding firing mouthrinse into your mouth – is its Gap Optical Targeting, which is Dyson’s AI learning machine algorithm. This scans 28 live images per second to identify, track and predict gaps between the teeth.

With variable sonic oscillation that varies the angle of the brush to improve plaque removal and prevent it from stalling, the brush head feels comfortable to use. While the body of the CameraJet is quite large for a toothbrush, the brush head is a comfortable size, and it contours my mouth smoothly.

The brush comes with a control panel on the front with three intensity settings, and modes for brushing, flossing or brushing and floss at the same time. The anti-gravity mouthrinse tank also delivers the recommended 25ml amount of mouthrinse each time you use it. This has a diaphragm pump and pressure chamber that adapts during use to eliminate air pockets and prevent the device from firing blanks. This means it should provide uninterrupted jets of mouthwash, whichever way you hold its cordless design. I found it a little hit and miss at times, particularly in the front teeth, but there’s a knack to brushing correctly that I haven’t quite mastered yet.

With the WiF-connected camera acting like a dental endoscope, the brushes smart app can show you a live-view of the inside of your mouth. I found it easy to connect to the app over WiFi, and while I’ve only tried it a few times, i’m really impressed with how clear a picture quality it displays and how quickly the picture streams.

As I use the brush more, and follow the guided cleaning sessions in the app, my technique will no doubt improve, resulting in a much more thorough clean. Here you can see which bits you’re missing and get advice on how to improve your clean.

  • Design score: 4/5
Dyson CameraJet: Performance

(Image credit: Future / Emily Peck)
  • Variable sonic oscillation to prevent stalling and keep bristles moving
  • With 100k pixel macro lens camera and conical jet to target gaps between teeth
  • Flexible jet-flossing controls and three brushing intensity modes

The first time I tried to use the CameraJet I got a spray of mouthwash on my forehead when I turned it on. It’s then that I discovered my rule number one – make sure to direct it away from the face when turning it on.

Once inside my mouth, I found it comfortable to use, even if its tooth-tickling spray did take a few attempts to get used to. At 61.3 dBa – measured at home on my decibel meter app on its highest setting – it’s not too noisy either but gently hums away. Its medium-firm, dual-bristle brush head is a nice shape and glided along my gums comfortably.

On board its powerful sonic motor and diaphragm pump is designed to deliver a targeted, pressurized conical jet spray in as fast as one-tenth of a second to target plaque effectively.

Dyson suggests applying light pressure and allowing the toothbrush to do the work. You also need to keep moving the brush as you use it to ensure the camera can find the gaps dispense the jet sprays, and this can be a little tricky to start off with. It doesn’t always fire a jet spray when I think it should, but I’m getting better at handling it. This is where the app is also helping, as I can see exactly which teeth are being cleaned and getting prompts to ‘part my lips wide’ and move sections. I can also follow the guided cleaning sessions, while the camera tracks which teeth i’m cleaning in real time.

The app only went live a day prior to launch, so I haven’t really had a proper chance to use it, but I do find it strangely exciting to see the inside of my mouth in real time while I brush. It’s a sight I only thought I’d see when visiting the dentist, and while it offers a little more insight than I’d like, I can see that it has the potential to be very helpful when cleaning - and when you’ve got toothache or something stuck in between your teeth.

From the three brush intensity settings, I’ve been finding the deepest clean the most effective. As well as the option to either brush or floss for two minutes, you can also brush and floss for three minutes at the same time. The toothpaste is non-foaming, which helps to reduce any slurry in my mouth, but when I’m flossing and trying to look at which teeth I’m brushing, my bathroom mirror is getting a lot of spray. I think when the app goes live and Ii’m able to view a live-stream of the inside of my mouth while flossing, this might make things a little less messy. It will also be able to tell me which teeth I’m missing.

After a week, this more disciplined approach has left my mouth feeling fresher and cleaner. But while I trust the jets are working, I don’t think I’m quite ready to give up my dental tape completely just yet.

When I first set eyes on the Dyson CameraJet, I couldn’t help but wonder if its built-in camera was just a superfluous gimmick or a useful oral health tool. But having trialled it for a week, I’m impressed by its premium feel and just how deeply it seems to be cleaning my teeth. On first look I think the app is rather special too, and has the potential to be really quite useful.

Overall, I think if you’re willing to make the spend, the Camerajet can be a smart and informative oral health tool. And as regularly as I’m currently using it, I know I’ll feel much more confident next time I visit my hygienist.

  • Performance score: 4/5
Dyson CameraJet: Scorecard

(Image credit: Future / Emily Peck)

Category

Comment

Score

Value

Premium price and you need to factor in the cost of refills, mouthrinse and toothpaste

3.5/5

Design

Easy to hold and comfortable in hand. Built in mouthrinse tank makes it a little bulky.

4/5

Features

Impressive 100k pixel macro lens camera and variable sonic brushing. Useful guided cleaning sessions and live-stream insight on the app.

5/5

Performance

Feels like a thorough clean, even if the splashes make it messy to use in jet flossing mode

4/5

Total

4/5

Dyson Camerajet: Should I buy?Buy it if…

You want to improve your cleaning coverage

The conical jet on this device is optimized to precision floss while you brush. By simply using it twice a day for three minutes at a time, you’re taking positive steps to try and improve your oral hygiene. There’s also an accompanying app to help guide you.

You love a smart app with health data

This smart toothbrush pairs with the MyDyson app on your smartphone to give you access to even more health data.

You want to try jet flossing

The convenient thing about the Dyson CameraJet is that its conical jet spray delivers the recommended amount of mouthrinse from its built-in anti-gravity tank. It can help keep plaque at bay and leave your mouth feeling fresh.

Don’t buy it if…

The idea of a camera-based product makes you uneasy

Smart devices aren’t for everyone, although Dyson does take privacy seriously. The camera is only active during live viewing or auto-jetting settings and Dyson states that no images are recorded or stored on the product or in the cloud, and images remain private to the user.

You’re squeamish

The built-in camera on the CameraJet doubles as an oral endoscope and is designed to work alongside the MyDyson smart app to provide a live feed of the inside of your mouth while you brush. Of course you don’t have to use this feature, but it’s a key part of the offering and may just help with brushing.

Your budget is tight

You could argue that with this toothbrush you’ll be potentially saving money on dental bills, but you’ll also need to factor in the cost of replacement brushes every three months, Dyson toothpaste and mouthrinse.

Also consider

Suri Core 1.0 electric toothbrush

It may not have a built-in water flosser, but the latest Suri Core 1.0 electric toothbrush is very effective. It comes with gentle haptic pressure sensor to let you know when you’re brushing too hard, recyclable heads and gives you an impressive four-weeks battery life on a full charge.

Read our full Suri Core 1.0 review

Oral-B iO Series 10

Our best premium AI powered electric toothbrush.

Read our full Oral-B iO Series review

How I tested

Back in May 2026, I visited Dyson’s global headquarters to see how the CameraJet was engineered, constructed and tested. Prior to its launch on September 1st, I tested CameraJet myself at home over the course of a week. I assessed its design, performance, battery life, brush modes and noise levels using a decibel meter reading on my smartphone. At the time of reviewing, the app has only just gone live.

Categories: Reviews

MSI Pro MP243W E14 review: A simple FHD business monitor at a spectacular price

Mon, 08/31/2026 - 16:40

The MSI PRO MP243 is a slim-bezel monitor that delivers nearly everything you would want from a low-cost display. At the same time, it’s exactly what you would expect when you hear the words “budget monitor.”

It’s not going to impress you with flashy features, and it’s not going to win any performance awards. It's not the very best business monitor we've ever tested. But what it does offer, however, is a sleek design, an easy setup, and enough of what most people need to make it a practical choice for everyday work in the office or home.

Maybe you need a larger screen for your home office, or perhaps you just bought a mini PC or Mac mini and need an affordable display to go along with it. It could also work well as a second monitor in a dual-screen setup. In those cases, the MP243 does the job.

MSI PRO MP243: Price and availability

(Image credit: Collin Probst // Future )

The price is where the MP243 really starts to make sense.

At around $120, you are getting a 23.8-inch IPS panel, a 144Hz refresh rate, Adaptive-Sync, HDMI, DisplayPort, built-in speakers, VESA support, and a clean white design.

That is a good group of features for a monitor in this price range.

One of the closest alternatives is the Dell SE2426HS. It has a similar 23.8-inch Full HD IPS panel, 144Hz refresh rate, Adaptive-Sync, and VESA support. The Dell also has a height-adjustable stand, which is a real advantage over the tilt-only stand on the MSI.

The MSI does have a few advantages of its own. It includes built-in speakers and DisplayPort, and the white finish gives it a cleaner look than most budget monitors.

At a lower sale price, the MSI is an easy monitor to recommend. At around $120, it is still a good option, but there are more competitors worth considering.

It really comes down to what matters more to you. If you want the white design, built-in speakers, and DisplayPort, the MSI is a good pick. If you care more about stand adjustment (and a higher resolution), there are better options.

(Image credit: Collin Probst // Future )MSI PRO MP243: Unboxing and First Impressions

Most of the monitor and stand are plastic, but they don’t really feel cheap. It’s lightweight enough that I’d still be careful when putting it together and taking it apart.

Everything included in the box is white, even down to the cables, which gives the setup a uniform look. If you’re someone who likes a certain aesthetic, I think you’ll appreciate that everything matches.

The monitor is really simple to put together. Everything just clicks in, and then you’re good to go. The back of the stem includes a cable-management clip for routing your power and display cables. It is a small feature, but it helps keep the back of your desk a little cleaner.

The top of the base includes a simple organizer slot. It’s big enough that you can put a USB adapter, thumb drive, or anything else in there that would otherwise just be sitting on top of your desk. It's an unexpected little feature that actually turned out to be useful.

MSI advertises it as a spot to hold your phone. You can place your phone in landscape and, depending on your workflow, use it as a secondary screen or simply keep it visible for notifications, your calendar, or something similar. It’s not a huge feature by any means, but it’s another small touch I appreciated that adds to the overall practicality of the monitor.

MSI PRO MP243: Design & Build Quality

The monitor’s control button is on the back right side. It doubles as both the power button and the joystick for navigating the menu.

The monitor keeps things simple when it comes to connectivity. It has one HDMI port, one DisplayPort, and one 3.5mm headphone jack. Both display inputs support 1080p at refresh rates up to 144Hz.

Honestly, support for up to 144Hz is a nice bonus for this price range, even if it’s clearly built for office work first. It's not necessary, but it's handy and opens up the customers for this monitor a little bit as well.

The MP243 has the standard settings you would expect, including brightness, contrast, sharpness, volume, and color controls. It also includes a few MSI-specific features that are worth mentioning.

MSI’s EyesErgo features include Less Blue Light, Anti-Flicker, and an anti-glare coating. These are all meant to make the monitor easier on your eyes during longer work sessions. If you spend most of your day reading emails, writing, or working through spreadsheets, they are nice features to have.

There is also an Eye-Q Check feature that gives you basic reminders for posture, eye fatigue, and taking breaks. It is not a feature I would buy the monitor for, but it makes sense on something that is primarily designed for office use.

The monitor supports Adaptive-Sync, HDR Ready, and refresh rates up to 144Hz. Adaptive-Sync can help reduce screen tearing, while 144Hz makes scrolling through webpages and moving things around the screen feel smoother than it would on a basic 60Hz monitor.

One of the more useful features of this monitor is its support for VESA mounting. The obvious benefit is that the monitor can be attached to a compatible wall mount or monitor arm. However, I think the more interesting use case is mounting a compatible mini PC directly to the back of the monitor.

Pairing this monitor with any of the best mini PCs is a more affordable alternative to a prebuilt all-in-one desktop. The computer stays out of sight, you can use shorter cables, and the whole setup takes up less space and looks cleaner.

I’m a stickler for cable management and keeping electronics as organized as possible. Being able to mount a mini PC behind the monitor, hide most of the hardware, and cut down on visible cables really adds to the value of this monitor.

The MP243 uses a 24-inch IPS panel with a claimed viewing angle of 178 degrees.

The bezels are thin along the left, right, and top edges, while the bottom bezel is slightly thicker. Combined with the white finish, the slim borders give the monitor a more high-end appearance than its price might suggest.

That is where this monitor arguably shines the most. It looks sleek, occupies relatively little space, and can blend naturally into a clean home-office environment.

The actual display is more conventional. Its 1080p resolution and standard image-quality features are appropriate for email, web browsing, documents, spreadsheets, and other everyday office tasks.

You can do just about anything with it, of course, but if you're trying to edit photos or creative content on this, you may miss some things you would catch on a higher end monitor, it also just won't look as clear.

MSI PRO MP243: In use

(Image credit: Collin Probst // Future )

One thing I actually didn’t mind was virtual meetings on this monitor. While I didn't have the clearest images of everyone, I didn't feel the virtual meeting was degraded or compromised in any way when using this screen.

The monitor includes two built-in 2W stereo speakers. The best comparison I can make is that they sound like basic laptop speakers without Dolby features or any other processing trying to make them sound better than they are.

It was good enough to hear clear audio, but I won't be listening to music through this anytime soon. If you do not already own desktop speakers, they are enough to get started. You can always add better speakers or headphones later.

I also connected an Xbox Series X and tested the monitor with Overwatch. It worked and the game was “playable.” However, the deficiencies were pretty noticeable when compared to my dedicated gaming monitor, which was already around five years old.

The 144Hz refresh rate may make it seem gaming-friendly on paper, but refresh rate alone doesn’t define the overall experience. For casual gaming, especially with a system limited to Full HD, it gets the job done.

I would not buy it specifically for gaming, though. Anyone shopping primarily for gaming should look elsewhere, which makes sense as this is more of a budget business monitor, despite the 144Hz tag that will get gamers excited.

MSI PRO MP243: Final verdict

(Image credit: Collin Probst // Future )

The MSI PRO MP243 is best suited to someone who wants to upgrade or expand a home-office setup without spending much money.

Its strongest qualities are its clean design, compact footprint, useful stand, cable-management features, built-in speakers, and support for VESA mounting systems. It provides the basic features most people need for regular office work while looking better than many inexpensive monitors.

Its limitations are just as clear, though. It’s only 1080p, the build is lightweight, and while it supports 144Hz, I wouldn’t recommend buying it specifically for gaming. That doesn’t make it a bad product. It just means it should be purchased for the right reasons.

This is a practical choice for emails, documents, web browsing, secondary-screen use, casual media consumption, and compact desktop setups. If you’re not concerned about having 4K, it offers a straightforward and affordable way to add more screen space to your desk.

Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future
Categories: Reviews

I tested iFi’s new DAC/amp and it’s a masterpiece, with impressive portable power, stellar sound quality, a fountain of features, and an intuitive OLED display

Mon, 08/31/2026 - 16:00
iFi iDSD GR 2: one-minute review

With the iFi iDSD GR 2, a seemingly arduous task was at hand. British hi-fi brand iFi had to produce a portable DAC/amp that could improve on the spectacular xDSD Gryphon, which we handed a rave five-star review. But boy, did they pull it off.

The iDSD GR 2 provides upgrades that feel meaningful, practical, and tangible. It delivers around 50% more amplification power than its predecessor, making it easier to drive more demanding headphones, all while providing enhanced dynamic range and lower distortion. What’s more, it adds K2HD tech, licensed from JVC Kenwood, which helps to restore warmth and musicality that digital recordings sometimes lose.

Oh, and it fixes our only major gripe with its predecessor, by adding a vivid OLED touchscreen display, making it feel intuitive and easy to use when switching sources, toggling XBass and XSpace processing, or accessing settings. As a result, it easily competes with the best headphone DACs that money can buy.

It's a fantastic performer, delivering articulate, layered, and balanced sound. I paired the DAC/amp with the Astell & Kern A&ultima SP4000 music player and a range of headphones/IEMs, including the Sennheiser HD 600, and the results blew me away. The GR 2 supplied intricate instrument separation, punchy bass, phenomenal mid-range clarity, and expressive treble, making for a captivating listen, no matter what genre I threw at it.

What’s more, the DAC/amp has higher battery capacity (4,900mAh) with adaptive power, meaning I could indulge in long listening sessions without interruption. Combine that with a neat companion app, numerous connectivity modes, and a lightweight feel, and the GR 2 is the ideal device for audiophiles to carry while on the move.

At launch, the iFi iDSD GR 2 is cheaper than its predecessor was at the point of release, despite making a whole host of improvements. And while it would’ve been nice to see a case bundled in at this price-point, and while there are cheaper options on the market, I still think this model offers impeccable value for money when considering the sheer volume of tech crammed into this little device. As a result, it’s all too easy for me to recommend the GR 2.

(Image credit: Future)iFi iDSD GR 2 review: price & release date
  • List price of $529 / £529 / AU$849
  • Released in June 2026

The iFi iDSD GR 2 released in June 2026, and is the spiritual successor to the brand’s popular portable DAC/amp, the iFi xDSD Gryphon — a model that hit the market back in 2021. Despite offering a number of upgrades over its predecessor, the GR 2 is cheaper at launch, coming in at $529 / £529 / AU$849.

(Image credit: Future)iFi iDSD GR 2 review: features
  • Brilliant OLED touchscreen display
  • 4,900mAh battery capacity with adaptive power
  • K2HD tech opens up even more textured, subtle playback

The iFi iDSD GR 2 is rammed with features, and improves significantly on its already impressive predecessor.

Some of the most captivating options are back, including XBass and XSpace filters, which you can use in tandem or individually. XBass provides a tasteful bump to low-end sounds, while XSpace aims to deliver a more expansive soundstage — both work brilliantly, and I found myself using them often for more hard-hitting hip-hop and dance tracks.

You can select these via a new OLED touchscreen interface, which is phenomenally responsive and very easy to use. Here, you can access a range of settings, including Bluetooth pairing, dual charge mode, a voice prompt toggle, volume sync and more. The main menu also enables you to sift through the GR 2’s vast array of sources, such as Bluetooth (with higher-res aptX Lossless and LDAC support), USB-C, optical, coaxial, and line in. There’s also a lock button if you want to avoid accidental screen touches.

On top of this, the model features dedicated 3.5mm and 4.4mm headphone ports and a USB-C charging slot. Speaking of charging, it will take about 3.5 hours to get to 100% from flat, which isn’t particularly impressive, although I still found that I got quite a lot of playtime from the GR 2 without having to juice it up. That’s because the model features an upgraded battery capacity of 4,900mAh, which should be good for around 7 hours of use — though this will vary depending on volume and if you’re using sound filters.

You can use the GR 2 while charging it via its dedicated USB-C port, a very useful feature if you find you’re indulging in long listening sessions (as I did during testing). The DAC/amp also brings a new adaptive power feature to the table, which balances external power and battery operation. So, if you’ve got the GR 2 hooked up to an external supply, it can prioritize mains power, and in the case that additional power is required, it can be drawn from the device’s battery. The GR 2 will also automatically return to external power if demand drops.

Perhaps my favorite new feature on the GR 2, though, is its K2HD tech, which we saw before in iFi’s considerably pricier and larger iDSD Phantom desktop DAC. This is intended to restore harmonic detail, and bring a track closer to its intended sound, and is exclusively licensed to iFi by JVC Kenwood. I’ll speak more about the sonic benefits of K2HD in the ‘sound quality’ section, but for now, just know that it is indeed a brilliant addition.

Finally, it's worth noting that you can control the GR 2 with the iFi Nexis app, which is incredibly easy to use. It displays all of the options you’d typically see on the device’s touchscreen display, enabling you to easily switch between connectivity modes, adapt volume, toggle on the XBass / XSpace modes and more.

  • Features score: 5/5

(Image credit: Future)iFi iDSD GR 2 review: sound quality
  • Balanced, articulate, and nuanced sound
  • K2HD adds beautiful depth and detail, XBass / XSpace fantastic too
  • 50% more headphone drive, but less distortion and greater dynamic range

The original Gryphon was a great performer, delivering impeccable detail, precision, and dynamism, so it should come as no surprise that its sequel is phenomenally talented as well.

Although I tried the GR 2 with a few pairs of IEMs, I conducted most of my testing with the Sennheiser HD 600 headphones, and iFi’s DAC/amp got the very best out of them.

When tuning into a 24-bit 192kHz FLAC of Doralice by Stan Getz, João Gilberto, and Antonio Carlos Jobim, the GR 2 provided a beautifully balanced, insightful listen. Vocals were textured and carefully defined, and the K2HD feature added a nice dosage of warmth. Acoustic guitars were brilliantly separated too, and sounded as if they were operating in a discrete pocket within a broad and nuanced soundstage. Subtle percussion worked away in the right channel and expressive, leading sax also flowed through with personality and natural tonality.

With a more energetic track, Rocking Chair by Mr Scruff, the GR 2 continued to impress. The resonance of bongos in the intro was striking, higher pitched percussion in the treble range came through with vibrancy and precision, and there was an incredibly warm and textured quality to the squelchy bass, which hit with impressive impact — especially with XBass active. Individual instruments, like keys and tambourines were again fantastically weighted and separated, and K2HD added a delicious layer of subtlety and detail that effortlessly restored the richness of the tune’s low end.

Even compared to a strong portable rival, like the FiiO BTR17, the iFi iDSD GR 2 proved to be exceptional. In Felini by Venerus and Marco Castello, the trickling of water was true-to-life and acoustic guitars were expertly separated from emotive vocals. On that subject, iFi’s model just added a bit more detail and depth to the vocals compared to its (still impressive) FiiO rival. The GR 2 exhibited a markedly delicate, raw quality with the vocals and I felt as if I was getting the sort of listening experience the artists had intended.

The capability of the GR 2 to serve up punchy bass, articulate mids, and expressive treble while maintaining such excellent balance across the frequency range has to be applauded. Combining this with its nuanced and precise soundstage — with or without XSpace — and impressive handling of dynamics, it truly feels like the full package.

What’s more, the GR 2 has around 50% more power to drive headphones with (up to 1,513mW RMS) than its predecessor, but it still offers even greater dynamic range and less distortion. So, whether you’re looking to upgrade from the OG Gryphon or get a portable DAC/amp with serious audiophile credentials, I think the GR 2 is one of the best options on the market right now.

  • Sound quality score: 5/5

(Image credit: Future)iFi iDSD GR 2 review: design
  • Excellent OLED touchscreen display
  • Lightweight and pretty portable
  • Case can be purchased separately

In terms of design, the iFi iDSD GR 2 is a considerable upgrade over its predecessor, largely as a result of one major change: its touchscreen.

Not only is the OLED color display vivid and clear, but it's incredibly easy and intuitive to use. The touchscreen is responsive and enables you to easily make any changes you want or switch to a different source. You can also adjust the screen’s brightness to your liking, or lock the screen entirely if you want to prevent accidental commands.

Otherwise, the GR 2 has all of the qualities you’d want from a portable DAC/amp. It’s lightweight (at just 0.6 lbs / 268g), has a wide range of connectivity ports, and has a good standard of build. It also has a tactile volume control knob with a small set of physical buttons — all of which are well-sized and effective.

Some may find that there are more ‘portable’ options out there. The FiiO BTR17 I compared to the GR 2 has a considerably smaller footprint, and will fit in just about any pocket. But for the tech stuffed inside iFi’s new model, I’d still argue it’s portable enough, and I had no issue slotting it into my short pockets or a small bag. Oh, and in case you're wondering, no, my review sample never ran hot — not that the OG did either, you understand, but it's often a question we're asked. These products bear plenty of power squirrelled away within a small enclosure, so it's important to mention.

The only thing I would have liked is a case, which has to be purchased separately. But otherwise, the GR 2 is a certified hit in the design category.

  • Design score: 4.5/5

(Image credit: Future)iFi iDSD GR 2 review: setup & usability
  • Incredibly easy to get set up and started
  • iFi Nexis app only adds more seamless usability
  • Easy to use interface

The iFi iDSD GR 2 is incredibly easy to start using. Just power the device on and it’s ready to go — no overlong login process, no confusing pairing requests, just plug and play design at its best.

Even if you’re not a seasoned user of DACs or amps, everything is labelled clearly, making it very simple to navigate. The iFi Nexis app also helps you tap into any settings you need on the fly, only heightening the device’s versatility.

  • Setup & usability score: 5/5

(Image credit: Future)iFi iDSD GR 2 review: value
  • Not the cheapest option around, but still great value
  • Less pricey than predecessor at launch
  • Impeccable all around quality makes it feel worth the investment

Look, I’m not going to pretend that the GR 2 is a cheap piece of tech. It comes in at $529 / £529 / AU$849, which is a considerable investment to make into your audio setup — but I still think it more than earns its price.

First of all, it's cheaper than its predecessor at launch, but offers 50% more amplification power, a much-improved user interface, K2HD tech, and more. It does all of this while remaining highly portable and delivering stellar sound, and there can be no doubts over the quality you get in return for your outlay.

Yes, you could grab a model like the aforementioned FiiO BTR17 for around $219 / £179 / AU$349, and while that’s a nifty small pick with strong performance and features to match, it can’t deliver the depth of the GR 2, which stuns with its excellent sound filters, wide connectivity options, top-tier audio, and mighty portable power.

  • Value score: 5/5

(Image credit: Future)Should I buy the iFi iDSD GR 2?

Attribute

Notes

Score

Features

Excellent new display, K2HD and XBass / XSpace work a treat, neat adaptive power with upgraded battery capacity.

5/5

Sound quality

Balanced, layered, precise sound with beautiful detail from K2HD with tasteful bass and soundstage boost options.

5/5

Design

Fantastic touchscreen display, great build quality, lightweight, would be even better with a case bundled in.

4.5/5

Setup & usability

Quick setup, easy to use interface, neat control app.

5/5

Value

More affordable than its predecessor while meaningfully improving upon it in almost every way.

5/5

Buy it if…

You need a powerful and portable amplification solution
The GR 2 provides around 50% more output power than its predecessor, meaning it can fuel some harder-to-drive headphones, and even some speakers. So, if you need a powerful amplification tool to take on the go, look no further.

You're looking for premium performance
I was wowed by the quality on offer from the iFi iDSD GR 2. Music sounds textured and layered, especially with K2HD tech activated. If you want premium on-the-go performance, this is the model I’d go for.

Don’t buy it if…

You’re on a budget
Although it still offers great value for money, there’s no denying that the iFi iDSD GR 2 is quite the investment. In addition, there are plenty of lower-priced alternatives that we’ve rated highly — if you’re interested, check out the ‘also consider’ section.

You want an ultra-compact model
The GR 2 is still a very portable device, and will slot into some pockets and any small bag. But there are even more compact alternatives out there, like the FiiO BTR17, for instance.

iFi iDSD GR 2 review: also consider

Chord Mojo 2
The Chord Mojo 2 provides phenomenal audio quality, which we described as “eloquent, engaging and endlessly listenable” in our glowing five star review. It also offers plenty of connectivity options, strong build quality, and a standout design. It doesn’t have the most intuitive interface, though. Read our full Chord Mojo 2 review.

FiiO BTR17
The tiny FiiO BTR17 is a great little DAC/amp. I used it as a point of comparison for the GR 2, and while iFi’s model sounds a bit more nuanced, FiiO’s rival is still a fantastic sounding option, with a tiny footprint, stylish look, and wireless connectivity. Read our full FiiO BTR17 review.

How I tested the iFi iDSD GR 2

(Image credit: Future)
  • Tested across multiple days
  • Used with Sennheiser HD 600, Beyerdynamic IEMs, and more
  • Compared against rival model

I spent multiple days intensively testing the iFi iDSD GR 2, during which time I spent countless hours listening to music and exhausting its various features.

Most of the time, I used the Sennheiser HD 600 headphones to test the GR 2 out, although I did also use a few pairs of IEMs from the likes of Beyerdynamic. I used the Astell & Kern A&ultima SP4000 as my main source device, and played a range of file types. And when listening to music, I tuned into tracks from a wide variety of genres, and made sure to compare the GR 2 against a rival from FiiO.

More generally, I’ve spent years testing audio gear here at TechRadar, where I serve as a resident Senior Reviews Writer. I’ve reviewed a range of products, from hulking party speakers like the Marshall Bromley 750 through to reference-grade IEMs, like the Sennheiser IE 600.

Categories: Reviews

The Philips 5000 Series Megabasket with Steam is a fabulously versatile air fryer that surprised me with consistently great results

Mon, 08/31/2026 - 13:00
Philips 5000 Series Megabasket with Steam Air Fryer: 30-second review

The Philips 5000 Series Megabasket with Steam Air Fryer is an air fryer and then some.

Sure it does a great job at being an air fryer, and so it should for the premium price tag it comes in at. The sizable 9.5L basket offers plenty of space for family-sized portions, while the handy divider allows you to cook two different foods, at differing durations and temperatures, simultaneously. It’s pretty par for the course these days, but the 5000 Series Megabasket is only just getting started.

Things are turned up a notch with the steam functionality Philips has built in. Being able to perfectly steam vegetables, fish and dumplings without the need for a separate appliance saves on counter and cupboard space, and the results here are just as good as the air fryer.

However, the versatility is kicked into overdrive with the streamfry function, allowing you to bring the best of both worlds to your food. The crispy finish of an air fryer combined with the moisture locking abilities of steam. The result? Some of the best chicken wings I’ve ever made.

(Image credit: Future)

All this functionality not only comes at a cost to your wallet, but also your counter top. This is a wide, tall air fryer that requires plenty of space — especially when using the steam or steamfry function, as the water vapor vents from the rear.

I’m a big fan of Philips’ controls though. The touch buttons are intuitively laid out, with easily recognizable icons that require little reference to the manual to work out - that can’t be said of all air fryer brands.

(Image credit: Future)

The basket, trays and divider are dishwasher safe, and you can also use the steam function to give the appliance its own steam clean. You will need to give the top a wipe every now and then, as the glossy finish attracts grime — but it’s a minor point in what is an overwise excellent appliance.

Whether you’re looking to make cakes, cookies, sausages, chicken wings, fish, vegetables, fries, dumplings or pretty much anything else, the Philips 5000 Series Megabasket delivers consistently great results.

Philips 5000 Series Megabasket with Steam Air Fryer price and availability
  • At £259.99 (about $350 / AU$490), it’s at the premium end of the air fryer market
  • Available in the UK, but not in the US or Australia

The Philips 5000 Series Megabasket with Steam Air Fryer price is £259.99 (about $350 / AU$490), putting it at the premium end of the market, and pits it against the Ninja Foodi FlexBasket in the larger-basket arena.

There are cheaper, big-basket air fryers on the market that also perform well, with the Philips 1000 Series Dual Basket and Tower Elite 11 Litre Flexi Drawer both coming in at around half the price of the 5000 Series.

This exact model (the NA465) isn’t available in the US and Australia, with these regions instead getting the $349.99 / AU$499 5000 Series Dual-Basket Airfryer with Steam (NA551) with two separate drawers, rather than one large one.

  • Value score: 4/5
Philips 5000 Series Megabasket with Steam Air Fryer: specifications

Review Model

NA465/92

Number of baskets

1

Number of cooking programs

8

Cooking programs

Frozen fries, mixed vegetables, chicken drumsticks, tray bakes, fish, dumplings, reheat, favorite

Extra functions

Steam, Steamfry, Shake reminder, SteamClean, Adjustable basket size

Smart control

No

Wattage

2750W

Capacity

9.5L

Temperature range

40-200 degrees C

Time range

1-180 minutes

Dimensions

496mm (L) x 329mm (W) x 355mm (H)

Dishwasher-safe

Yes

Weight

8.2kg

Philips 5000 Series Megabasket with Steam Air Fryer: design
  • Wide and tall, but for good reason
  • Set of tongs included in the box is a nice touch
  • Touch controls are easy to understand and well laid out

The Philips 5000 Series Megabasket with Steam Air Fryer is big, it’s almost as if a UFO has landed on your worktop. Wide and tall, it dominates the kitchen counter — but for good reason.

The spacious 9.5L basket provides great flexibility as one large cooking space big enough for 2.5kg of fries, 1.9kg of ribs, or whole chicken, but can easily be split into 3L and 6L baskets with the included divider. This allows you to cook two separate things, at different temperatures and durations, at the same time.

You can even just choose to use one of the sides only, saving on power consumption when cooking smaller portions.

The only small issue with the basket is its handles, which consist of two small protrusions on either side. It means you have to use two hands to open the drawer, and to lift and carry it.

(Image credit: Future)

When the basket is fully loaded with food, it’s heavy so you’ll be using two hands anyway, but for times when you want to quickly check on cooking progress, you can’t open it with just one.

The additional height of this air fryer is down to the inclusion of Philips’ clever steam function, giving you more ways to cook from a single machine. You can steam food in this air fryer, as well as 'Steamfry', which combines both cooking methods.

What this means is you’ll need to consider where you want the air fryer to go, and whether you have suitable space for this 496mm x 329mm x 355mm model to fit - especially if you have low-hung wall cabinets over your worktops.

(Image credit: Future)

Hot air vents from the rear of the machine, so you need to leave space between it and the wall, and when using the steam function water vapor will also rise from the back of the machine.

The one meter power cable will be long enough for most kitchen setups, and the Philips 5000 Series comes with a clip-on cable tidy for the rear to keep things neat if you like to store your air fryer in a cupboard when not in use. Although, it’ll need to be a sizable cupboard.

A nice inclusion in the box was a set of tongs, a particularly useful addition when cooking with an air fryer, as it makes tossing food and removing it from the basket much easier.

(Image credit: Future)

There’s also a paper manual in the box that covers all the basics, mainly via pictorial guides, but for those who want a more detailed breakdown of functionality you’ll need to download the free HomeID app on your phone.

What isn’t made obvious out of the box is the need to run the air fryer empty initially to burn off the protective shipping coating.

Diving into the app deeper, Philips advises to wash the basket and accessories with a soft sponge, water and washing up liquid, dry them, and then run the air fryer empty, a 200C, for the maximum cook time (which for this model is 180 minutes).

(Image credit: Future)

That seemed excessive to me. I did an initial four minute cycle at 180C, allowed the basket to cool down, and then washed it, the divider, and the crisp trays, and set the machine at 200C for 50 minutes. The smell did get very strong during this time, but it did the trick.

When I came to cook with the air fryer for the first time, there was a slight smell during cooking, but it didn’t transfer to the food.

(Image credit: Future)

The controls here are excellent, just as they are on the Philips 4000 Series Stacked Dual Basket Air Fryer. The illuminated touch buttons on the top of the machine make it really easy to select the basket size you wish to cook with, and to set the temperature and time.

The only slight negative against this design is the glossy black surface quickly gets dirty, and shows up finger smudges. Plus, if your hands aren’t clean it can sometimes struggle to pick up your presses.

There are a number of presets to pick from too (frozen fries, mixed vegetables, chicken drumsticks, tray bakes, fish, dumplings, reheat), if you want to just press and play.

While the presets are useful, I did find during my weeks of testing they sometimes needed to be fine tuned to my preferred cook level. It’s all part of the early trial and error of using a new air fryer to work out the times and temps that work best for the food you’re cooking regularly.

(Image credit: Future)

When it comes to cleaning, the good news is the basket, trays and divider are all dishwasher safe. If you don’t have access to one, hand washing also works - although the sheer size of the basket means it can be tricky to clean in smaller sinks.

Another nice feature is the steam cleaning function. Simple to enact - just make sure the water reservoir is full and select the steam clean mode - it does a good job of loosening grease and marks in the basket. It means you can just run a cloth or paper towel round the basket and it’s pretty much clean. No need for hard scrubbing. It’s not going to remove stubborn marks or pieces of food debris, but it’s a handy option when only lightly used.

  • Design score: 4.5/5
Philips 5000 Series Megabasket with Steam Air Fryer: performancePerformance
  • Steam and SteamFry functions are excellent
  • Quiet operation
  • Great all-round cooking performance

The Philips 5000 Series Megabasket with Steam Air Fryer is one of the quieter models I’ve tested, making it an excellent cooking companion, especially in smaller kitchens as the noise doesn’t dominate the room.

As well as the presets, there are a couple of other useful features here. First is the shake reminder, where the 5000 Series will work out how many shake intervals are required based on the cook duration you’ve set, and will beep at set times to alert you to the fact you need to shake or turn the food in the basket.

FutureFutureFuture

This allows you to ensure an even cook, be it fries, chicken wings, vegetables, or pretty much anything else you’re cooking. If you’re not using a preset, you will need to manually enable the shake reminder by pressing the icon on the control panel.

The second handy feature is sync, allowing you to utilize the dual basket setup, and cook two different foods, at different temperatures, for different lengths of time, but have them finish at the same time.

The air fryer delays the start of the side with the shorter cook time, starting it when its duration matches that left on the other side. It’s simple to set up, and works really nicely.

FutureFutureFuture

The 5000 Series Megabasket is certainly well equipped, but how does it actually perform when it comes to cooking food?

As this is a large basket air fryer, and given my penchant for consuming pizza, I decided to kick things off with a simple, store-bought margarita. When I reviewed the Tower Elite 11 Litre Flexi Drawer, I was able to fit a whole round (admittedly small) pizza into the basket.

With the Philips, the basket isn’t as deep, which meant I had to slice my circular pizza in half and lay the two halves at an angle in the basket. It worked fine, but if this pizza was frozen rather than fresh, I would be forced to use the oven.

After warming up the air fryer for a couple of minutes first, I cooked the pizza at 190C for nine minutes. It turned out this was a minute or so too long, as the topping came out a little overdone. It was still fine to eat, but a glass window on the basket would have allowed me to keep a better eye on the progress being made. Alas, there’s no window on the basket.

I returned a few days later however with an oval shaped pizza. This easily sat in the basket, and having learned my lesson I cooked it for seven minutes at 180C.

The final cook was much better, with a crisp base and juicy toppings, although I noticed the part of the pizza towards the back of the basket was slightly more cooked than that at the front.

FutureFuture

You don’t always get a completely even cook from this air fryer, but it wasn’t a problem during the weeks of cooking I did.

Fries came out great with this air fryer, whether they were frozen or fresh. Crispy on the outside, fluffy in the middle, and using the frozen fries setting I got automatic reminders to shake the basket a few times during the 24 minute cook at 200C.

For the fresh fries I had to set the temperature (200C) and time (21 minutes) manually, as well as enable the shake reminder. Still, the results were great.

Baking is another highlight when using the Philips 5000 air fryer, with a simple banana bread recipe producing a moist inside, crunchy-topped loaf with an excellent texture. I cooked it at 160C for 25 minutes, and then 20 minutes at 140C.

I also produced delicious, gooey-centered chocolate cookies, with an eight minute bake at 175C doing the job nicely. The chicken breasts, mixed green vegetables and sausages I also cooked using the air fryer mode all came out well.

FutureFuture

But air frying is only part of the story. The reservoir atop this device is the signal this device has more tricks up its sleeve. The Steamfry function, that utilizes both the air frying components along with generating steam, aims to lock in moisture and enhance tenderness, creating juicy and golden textures. Basically, the best of air frying and steaming in one.

And it works really well. I used the entire basket to Streamfry large, hand-seasoned chicken wings on the chicken preset (32 minutes at 200C).

During the cook there are periods of air frying and periods of steaming, the latter of which are obvious as you can hear the steam being produced, and see it vent out the rear of the machine. If you have it up close to a wall, or under a kitchen cabinet, expect significant condensation. I’d recommend giving it plenty of breathing room when using a steam function.

The results were superb. Wonderfully crisp skin, and juicy meat made for a delicious dinner, and had me returning the next day for lunch to cook the rest of the wings I didn’t need the night before.

FutureFutureFuture

And when it comes to solely steaming, the 5000 Megabasket performs well yet again. Popping a selection of Japanese chicken and vegetable gyoza into the right side of the basket (steam and steamfry are available in the whole basket, or the right side only) and using the preset dumpling mode produced perfectly steamed, silky pillows.

A word of warning on the presets though, they aren’t a sure-fire win every time. When I cooked some green beans, broccoli, sugar snap peas, I split the batch between the two compartments. The veg I put in the smaller side I air fried, while I opted for steam on the larger side.

I selected the vegetables preset for both, which gave me settings of 200C for 30 minutes for the air fried veg, and 100C for 14 minutes for the steamed side. I also selected the sync option, so both sides would finish at the same time. However, at the first shake reminder for the air fried side (after 15 minutes) it was clear my veg was already overcooked.

(Image credit: Future)

I completed the full cycle for both sides, and the air fried veg was cremated. Thankfully, the steamed side had cooked very well, with tender broccoli stems, beans and peas.

Put bigger, chunkier pieces of veg in the air fry side (such as roughly chopped carrots and parsnips) and the preset is closer to what you need. It’s a good reminder that you need to spend time with your air fryer in the initial weeks to find out which settings work best for the food you cook - even with premium models such as the 5000 series.

  • Performance score: 4.5/5
Should you buy the Philips 5000 Series Megabasket with Steam Air Fryer?Report card

Attribute

Notes

Rating

Value

There’s a premium price tag, but you’re getting a premium product. The 5000 Series Megabasket is packed full with features, includes a set of tongs in the box, and is well built.

4/5

Design

If you have the space, this is a premium air fryer with excellent controls and plenty of features. The set of tongs included in the box is a nice touch, but the handles on the basket can be a little awkward.

4.5/5

Performance

Whether you air fry, steamfry or steam, you’ll get excellent results from the 5000 series. Its easy operation and impressive versatility delivers consistently great cooks.

4.5/5

Buy it if

You want excellent versatility

The steam and streamfry modes on offer here are excellent, so if you often use steam to cook, want an additional healthy way to cook, or want to reduce the number of appliances in your kitchen, the 5000 Series has you covered. The removable divider provides more flexibility too, with the ability to cook two separate foods simultaneously. You even get a set of tongs included in the box.View Deal

You want to feed a family

The large 9.5L ‘Megabasket’ provides plenty of space, allowing you to easily cook family-sized portions. It’s great for a large helping of chips, or a bunch of chicken wings.View Deal

You want consistent, delicious results

The Philips 5000 Series Megabasket produces great results in all cooking modes, and you’ll be thoroughly impressed with what it can do. From fluffy cake and gooey cookies, to crispy and moist chicken wings, crunchy fries, and wonderfully steamed veg.View Deal

Don’t buy it if

You’re on a budget

If you’re after a large capacity air fryer that still performs well and costs significantly less than this Philips, there are cheaper options available. They won’t look quite as sleek, nor will their controls be so well thought out, but you can pick up a budget, large basket air fryer for around half the price of the 5000 series.View Deal

You’re only after air frying capabilities

The steam and streamfry modes are excellent, but if you don’t see yourself ever using them, save yourself some money and go for an air fryer without them.View Deal

You’re limited on counter space

The Philips 5000 Series Megabasket is a big airfryer. Wide and tall, it will dominate small kitchens with limited counter space. It also needs to be positioned away from wall-mounted units and walls, to allow the hot air and the steam to properly vent from the rear.View Deal

Philips 5000 Series Megabasket with Steam Air Fryer: also consider

Ninja Foodi FlexBasket Dual Air Fryer

An immense air fryer with one of the largest capacities on the market and the flexibility to cook in either two independent zones or convert the drawer into one tray for larger meals.

For more information, check out our full Ninja Foodi FlexBasket Dual Air Fryer review

Tower Elite 11 Litre Flexi Drawer

If you’re after a big-basket air fryer on a budget, the Tower Elite 11 Litre Flexi Drawer has a larger basket than the Philips and is almost half the price. There’s no steam function here though.

For more information, check out our full Tower Elite 11 Litre Flexi Drawer review

How I tested the Philips 5000 Series Megabasket with Steam Air Fryer
  • I used the Philips 5000 Series air fryer for multiple weeks in my kitchen
  • I cooked a wide variety of food with it, including fries, cakes, vegetables, pizza and meat
  • I tested the various cooking functions, and the cleaning process

I spent multiple weeks using the Philips 5000 Series Megabasket with Steam Air Fryer in my kitchen. During that time I cooked using the air fry, steamfry and steam settings, and used the various preset modes, along with manual setting.

I cooked a wide variety of food, including baking cakes and cookies, air frying chips, pizzas, sausages and chicken, steaming vegetables and dumplings, and steam frying chicken wings.

I also tested the steam cleaning function, and cleaned the basket, trays and divider both by hand, and with the dishwasher.

First reviewed August 2026

Categories: Reviews

SOAX proxy service review

Mon, 08/31/2026 - 12:56

SOAX is a UK company, and a relatively young one at that, considering it was founded in 2020. It started small with only a few people, but as the years passed, it grew to the point that the company’s ethically sourced proxy network comprises more than 191 million IP addresses.

Since our last review, SOAX has undergone a major overhaul, with changes ranging from a new website and dashboard to a better API ecosystem and fresh features. Additionally, the company is now more of a data collection platform (somewhat of a trend in the proxy service industry) built around residential and mobile proxies, rather than operating solely as a proxy IP vendor.

(Image credit: SOAX)Features

(Image credit: SOAX )

Right from the start, one of the most notable features SOAX has is its sizable proxy pool. The company offers over 155 million residential IPs (all ethically sourced) and proxy servers (including mobile proxies) in more than 195 geolocations. The mobile pool has over 30 million IPs from carriers around the world.

Depending on the pricing plan, you can target any of those locations by country, region, city, ISP, ZIP, or ASN (Autonomous System Number).

IP rotation can be customized to match the specific requirements of each task, either refreshing the IP with every request or keeping the same IP over an extended session (up to 60 minutes for mobile proxies). Tweaking further, you can set custom session lengths.

SOAX lets you adjust how often your IP refreshes to fit your data collection needs. You also have the option to set up sticky sessions that keep the same entry point and IP address for each request. This gives you a consistent online presence throughout your session.

The company has a Web Optimizer feature that improves error management and keeps your browsing stable. There’s also the choice to turn on MaxIP, which helps you get the most unique IPs possible for tasks that call for a lot of IP switching.

Apart from proxy services, SOAX also has data scraping solutions that include managed scraping for AI, SERP, video, and e-commerce data.

The vendor promises 99.9% uptime, with support for HTTP(S), SOCKS5, and UDP/QUIC protocols.

Performance

During our previous testing, we ran some checks from the UK, targeting the UK to get the best possible speeds, and the residential proxy results were very similar to SOAX’s, with the TTFB averaging an excellent 787ms. Speeds you’ll see will vary hugely based on your location, your target, and the proxy type, but clearly the SOAX infrastructure can perform very well.

Plans and Pricing

(Image credit: SOAX )

After refreshing its service (website included), SOAX changed how the pricing works as well. The main difference is that the pricing now revolves around credits, which represent prepaid usage units. As a rough estimate, 1 credit equals $1 of usage.

The company also has a free no-commitment plan called Sandbox with basic support. You get no credits here, and there’s no subscription fee, but you can buy top-up credits when you need them, which is a good way to test the service out.

The starter plan is called Builder, and this gets you 200 credits, or in other words, it’s priced at $200 a month (VAT not included).

The actual network usage and pricing depend on geo-locations that are divided into three tiers. For instance, tier 1 includes the US, the UK, Italy, France, Germany, Japan, Australia, and other popular locations. So, if you use tier 1 locations, the pricing is set at $3.00 per GB with the Builder plan.

Using tier 2 (India, Brazil, Turkey, Nigeria, and so on), the pricing drops to $2.25 per GB, while tier 3 locations (mostly small countries and island nations) are priced at $1.20 per GB.

Other paid plans include Team (500 credits), Scale (1500 credits), and Enterprise (3000 credits). The main difference between these is that Enterprise has postpaid billing and dedicated IP pools.

All plans mostly share the same features and get 24/7 support, since there are some differences in higher-end plans. For example, Enterprise gets a premium SLA (all others get standard), dedicated IP pools, and CSM support on top of the 24/7 support. Furthermore, Scale and Enterprise plans get ASN and ZIP targeting.

SOAX also lets you pick a country and set a monthly traffic amount to see exactly how much you’ll pay.

The higher the plan, the cheaper the network usage is. So, tier 1 locations are priced at $2.20 per GB with the Team plan, while usage is priced at $1.50 per GB with the Scale plan.

Also, higher plans get more proxy packages, and going from Builder to Enterprise raises that number from 3 to 10.

Speaking of proxy packages, SOAX explains that those let you organize and control proxy access for different teams, projects, or tasks. Each package comes with its own login details, routing rules, permissions, limits, and usage stats, with every proxy request going through one package.

Signing up

(Image credit: SOAX )

Signing up with SOAX is easy. There are no lengthy identity checks, no need to provide documents just yet (KYC checks don’t happen until you sign up for one of the full paid plans); enter your name and verify your email address (or just sign up with Google), and you’re in.

You’re then prompted to continue with the no-commitment Sandbox plan or upgrade to a paid plan. If you pick the latter, hand over your cash (we were able to pay by card only, but crypto and other options are available once you verify your identity), and the subscription is immediately added to your account.

After that, the website refreshes to the main dashboard screen, a good-looking panel with a whole host of configuration options and status details. There’s a lot to explore, but SOAX does its best to help, offering its ‘get started’ and ‘product’ guides found next to your profile icon.

If, like us, you tend to rush through website onboarding, or sometimes skip it altogether, that’s okay too. The SOAX support chatbot is only a click away, and although it’s not smart enough to solve any complex problems, we found it handy for explaining the ‘where do I find…?’ startup basics. You can get human support this way too, provided you’re not on the Sandbox plan.

The main section of the dashboard is clean without any bloat, clearly showing you how much traffic has been used and how many credits you have left. On the left side, you can find the usage breakdown if you need more traffic details, and the packages section where you can create and manage them.

Getting started with SOAX

(Image credit: Soax)

Setup complete, it’s back to the dashboard to explore SOAX properly. This all starts with authorization, where you can opt to authenticate with a username and password or via IP whitelisting. We tried both, and in each case had to then specify our preferred IP rotation time, city, state or IP targeting, and assign them to specific ports.

That was enough for our first few tests, but if our needs were more complex, we could add more filters to target different locations or use other IP location schemes.

When you’re done, you can download your proxies in TXT, CSV and HTML formats. A handy Online Proxy Checker allows you to test up to 50 of these, report on their status and response times, and export only the working proxies. (You don’t have to be a SOAX customer to try this, it works with any proxies. Check it out here)

While SOAX offers a lot of proxy configurability and control, it doesn’t have the depth of functionality of the big names. Its proxy API is horribly basic when compared to the likes of Oxylabs, for instance, just a handful of calls to whitelist IPs and get location details. And although Decodo has supporting tools including browser extensions and its X Browser, there’s nothing like that here.

(Image credit: SOAX )

SOAX arguably makes up for this, though, with easy integration for a number of anti-detect browsers. The SOAX Integrations page links to tutorials covering how to get SOAX working with 15 popular tools, including Multilogin, GoLogin, AdsPower, Incognition and more.

Support

SOAX has a dedicated documents page where the company has various guides and explanations on topics relating to the service or just general proxy knowledge. A slightly confusing thing is that the page caters to both regular users and developers, so you may encounter some coding terminology in a few guides.

(Image credit: SOAX)

The service isn’t that confusing to use, but in case you have trouble, you can find a ‘Quickstart’ guide that can get you started in minutes. Additionally, you can find a similar guide on how to use the dashboard, as well as explanations of what certain settings do.

Then, there’s a help center, which is rather hard to find on the website if you’re not logged in, and it’s much easier to get there through Google. That said, you can find several articles here from the SOAX team, but they’re mostly about available API methods.

More importantly, you’ll find the chat box in this section (or in your dashboard when logged in), which you can use to send a message in case you need customer support. An AI agent is there too, available to answer any general queries, or you can request to chat directly with the support team.

(Image credit: SOAX )Final Verdict

After the overhaul, SOAX still retained the quality proxy service it provided before. You get a huge pool of residential proxies, a good set of features, and an overall good user experience.

There are some downsides, though. The credit-based pricing might not be for everyone’s cup of tea, and compared to some of its competitors, it’s a bit pricier. Also, unless you’re subscription-based, support will be harder to reach, even if the service isn't that complicated to use in the first place.

Still, the company does a good job of presenting what it can do and what some settings mean, which is especially helpful if you’re not that knowledgeable. Plus, there’s a no-commitment pricing option, allowing you to test the service out before you decide to cash out for it.

Categories: Reviews

The FiiO FG3 is a gaming headset aimed at audiophiles, but after several weeks, I'm not totally convinced

Mon, 08/31/2026 - 12:00
FiiO FG3: one-minute review

(Image credit: Future)

As an audio journalist, I’ve covered FiiO plenty of times; the brand is known for beloved digital audio players like the JM21 and digital-audio converters like the FA15. But I was surprised to see the brand enter a totally different market, trying its hand at a gaming headset.

The FiiO FG3 is the resulting device, and it clearly bears some of the audiophile DNA that FiiO is known for. It offers a coaxial dual-driver set-up, which is uncommon in games-focused headphones, and also totes a lightweight DAC control module to jump between audio presets.

So it should be a gaming gem, right? Right? Well, I think something was lost in translation.

FiiO’s hardware is fantastic for music, and the FG3 is the same, with the dual-driver set-up and handy EQ modes working well. However, it’s not quite as good for gaming, which isn’t ideal for a 'gaming' headset.

Audio is often too muddy and rumbly to do justice to the layered sound design of an immersive environment or frantic battlefield. It’s largely the low-end which lets the side down, with higher-pitched sounds cutting through pretty effectively. This won’t affect all games, and dialogue-heavy or rhythm ones will benefit massively from the tuning.

The fit of the headphones isn’t perfect either. While the cups are incredibly soft, the headphones squeeze and the headband is too firm. I had to take breaks from long gaming sessions to avoid my head hurting.

That all may sound like a series of criticisms, but there’s a lot to like here too. The cans are easily portable, and the control app being online-only is a breath of fresh air in this bloatware-riddled world (even if it rules out EQ control when you’ve got no internet).

The FG3 is also, crucially, pretty affordable, and I can see a discount or two making it an absolute bargain. If you’re reading this when they’re even $10 / £10 off, they’ll be an absolute bargain.

So it’s easy to look past some of the more annoying elements, or rougher edges, of FiiO’s sound tuning and design. But I can’t help but hope that the brand’s second foray into gaming headsets makes some improvements on what we’ve currently got.

(Image credit: Future)FiiO FG3: Price and availability
  • List price: $69.99 / £69.99 (around AU$140)
  • Available in the US, UK and Europe
  • Matches RIG R5 Spear Pro HS, undercuts other rivals

The FiiO FG3 sells for $69.99 / £69.99 (about AU$140, though at the time of writing, it’s not on sale in Australia), and was unveiled in June, 2026.

At that price, it undercuts many of the best wired gaming headsets, though it matches our top-rated pick: the catchily-titled RIG R5 Spear Pro HS. That makes it fairly good value for a gaming headset, with many alternatives going for three-figure sums.

For your money, you get the headset as well as a removable microphone, control cable and USB adaptor (which lets you plug the USB-C control cable into a USB-A port, if that’s what you have available).

FiiO FG3: specs

Price

$69.99 / £69.99 (around AU$140)

Weight

0.69lbs / 0.31kg

Drivers

50mm dynamic + 16mm dynamic

Compatibility

PS5, PS4, Xbox Series X|S, Xbox One, Switch, PC

Connection type

Wired (3.5mm or USB-C)

(Image credit: Future)FiiO FG3: design and features

The FiiO FG3 comes with a non-removable cable, which connects into a 3.5mm jack. It’s not long, but it’ll reach a hand-held controller. However, it’s best to connect it to a control module which comes in the box; this offers you the ability to mute, change EQ or modify volume, and has a much longer cable which connects to a device via USB-C (or USB-A, thanks to an included adaptor).

These cans aren’t particularly unique-looking, although the cups are slightly canted, which helps them fit a head shape better. They rotate a little horizontally and vertically, which also helps with the fit, though some other elements like the thin metal headband or certain cheap-feeling plastic elements discourage any notion of these being premium headphones. There are no on-cup controls either.

While the ear pads are soft and comfortable, I did find that the padded headband wasn’t padded enough. Longer gaming stints ended in growing aches; the FG3 fit isn’t as comfortable as other gaming headsets I’ve used. A slight squeeze offered by the cans didn’t help either.

You can fold the cups in on each other, and remove the microphone, transforming the headset into a compact unit which is easy to transport (though it doesn’t come with any kind of carry case). Combined with a feature we’ll get to later, it’s a great headset for people who game in different venues.

(Image credit: Future)

Now onto the feature set. A potentially-divisive feature of the FiiO FG3 is that you don’t need to download a control app to clutter up your PC. Instead, FiiO’s website offers the ability to change EQ and flick between presets.

I loved the fact I didn’t need to download more bloating software onto my rig, and that I could tote the FG3 between different systems and locations and still customize them, but it does mean that you get no control while offline.

The control site lets you choose three presets, which the control module lets you change between: a gaming mode, a cinema one, and a music one. The latter list, which includes the custom mode, is the one I found myself using most.

This module also means you can still jump between your EQ presets when you're on a console or handheld, so your decision to play on a Switch, PlayStation or Xbox doesn't mean you're banned from customizable sound.

Don’t expect any Active Noise Cancellation (ANC) here. I found that the Passive Noise Cancellation (PNC) or natural ear cup blocking, managed to cut out annoying background sounds from my street, as did the closed-back design. But it won’t save you from louder interruptions.

(Image credit: Future)FiiO FG3: performance

True to its audiophile heritage, FiiO has packed the FG3 with two drivers per cup: one 50mm dynamic driver designed to handle mid- and low-end, and a smaller 16mm dynamic driver for higher-end sounds. The benefit of dual drivers, rather than the sole unit found in most gaming headsets, is twofold: firstly, each being dedicated to different frequencies means that they can be better catered to them. Secondly, simultaneous sounds can be delivered with better clarity.

This latter is certainly true of the FiiO FG3, which has a distinct V-shaped sound profile; that means that bass and treble are well-defined and clear, though mids are a little lost. This isn’t a huge issue for gaming, as most sound effects are low or high ones, but it’s audible in music (including game scores).

It’s also clear that the high-end dynamic driver does its job well. Dialogue is easy to make out, even in frantic battles, including in-game audio and friends’ voice chats during gameplay. It’s also easy to make out nearby footsteps or the twinkle of a distant collectible.

(Image credit: Future)

However, I’m not as sold on the bass capabilities of the larger driver. In music it’s scooping and well-defined, but while gaming it lacks the power or ‘oomph’ of some other headsets I’ve tested. This means the chatter of your gunfire sounds a little dulled, nearby explosions lose a visceral edge, and roaring monsters sound like they have a sore throat.

Perhaps most importantly, the background rumble of a city or busy landscape which so often defines an alive-feeling open world felt a little too ‘rumbly’ for me. Some of FiiO’s equalization modes go some way to fix its issues, but not the whole way; I never found a way to stop the sound feeling a little muddy, and sometimes even made it worse.

A much-touted selling point of the FG3 is the use of Virtual 7.1, an algorithm which spreads sound to give a feeling of surround sound, without using 8 speakers (which would simply be 7.1 sound). It helps a little in spreading environmental and atmospheric sounds about you, though you’ll never forget that you’re simply getting spread-out headphone sound.

The removable microphone is… fine for purpose, but won’t deliver especially crystalline audio. Even recording onto my PC’s own voice recorder app, speech is a little crackly. However, I appreciate how dexterous the strut holding the microphone is: you can move it to different angles or heights, and there’s far more versatility than in many other headsets I’ve used.

(Image credit: Future)Should I buy the FiiO FG3?Buy it if...

You need something easily portable
Between the removable microphone, the foldable build, and the fact that you can use the control app anywhere, this is perfect for going to a friend's LAN party.

You like customizing your sound
The online EQ platform offers you loads of presets and plenty of control over your sound. Plus, the DAC control panel lets you jump between them easily.

Don't buy it if...

You need something suited for long gaming stints
After a few hours with the FG3, my head and ears were asking for a break. It's not the ideal headset for day-long binges, or even a full workday.

You want the best video game sound
If all you care about is the sound of your games, then the FiiO will disappoint you. It's not bad, but its muddy sound profile means you're never getting the best audio possible.

FiiO FG3: Also consider

(Image credit: Future)

Here are two more gaming headsets that we've given positive reviews to, if you're not sold on the FiiO FG3.

FiiO FG3

RIG R5 Spear Pro HS

Turtle Beach Atlas 200

Price

$69.99 / £69.99 (around AU$140)

$69.99 / £69.99 (around AU$140)

$59.99 / £49.99 (around AU$100)

Weight

0.69lbs / 0.31kg

0.74lbs / 0.34kg

0.62lbs / 0.28kg

Drivers

50mm dynamic + 16mm dynamic

40mm graphene

50mm Nanoclear

Compatibility

PS5, PS4, Xbox Series X|S, Xbox One, Switch, PC

PS5, PS4, Xbox Series X|S, Xbox One, Switch, Switch 2, PC

PS5, PS4, Xbox Series X|S, Xbox One, Switch, Switch 2, PC

Connection type

Wired (USB-C)

Wired (3.5mm)

Wired (3.5mm)

RIG R5 Spear Pro HS
This same-price rival offers great sound and a more comfortable fit. However, there's no way of customizing your sound, and you can't remove the microphone.

Read our full RIG R5 Spear Pro HS review

Turtle Beach Atlas 200
For even less than the FiiO, this Turtle Beach alternative offers a well-designed mesh headband and great mic quality. But its feature set is weighted towards PC gamers.

Read our full Turtle Beach Atlas 200 review

How I tested the FiiO FG3
  • Used for three weeks
  • Tested for gaming and other tasks
  • Mainly connected to gaming PC

I tested the FiiO FG3 for roughly three weeks in order to write the review. Through this time, I used the headset while connected to my gaming PC; I tried to plug it into my Android phone, but the connection was stuttery.

The majority of the testing was done gaming; predominantly Nioh 3 and Total War: Pharaoh, but with time also spent on Old School Runescape, Isonzo, Slay The Spire, Crying Suns and the Mortal Shell 2 beta. I also used the headset to stream music while at work, and watch YouTube videos and TV shows.

Since I review audio products for a living, I have plenty of experience testing gaming headsets (and using other headphones for gaming purposes). I've also tested other FiiO products.

First reviewed August 2026

Read more about how we test

Categories: Reviews

Anker Solix E10 review: After 4 months with this home backup system, I'll never worry about a power outage or a storm again

Mon, 08/31/2026 - 11:45

I have become quite the expert when it comes to portable power stations. It's definitely a weird flex, but I'll take it when I can get it.

When it comes to power stations, there are several different categories of how they are scaled. Some can run your phone, some can run your fridge, some can run your room, and some can run your house.

The Anker Solix E10 is on that home side. The company calls it "a Whole-Home Backup System, uniting battery, solar and a smart generator." And that's absolutely - and impressively - what it does.

It can scale up to where it could be a larger home and scale down to where it'll be a smaller home, or maybe a large garage, depending on what all you have in your garage.

The point is that it is a power station comparable to probably a Tesla Power Wall, as a lot of people would recognize just due to the brand name. It is not only a reservoir of power that you can pull from in case of a power outage, but also a transfer switch.

It has the ability to connect with solar panels to intake solar power from the sun and utilize that to run your home. Depending on the power company, you have potentially even kicked back some power to the grid and gotten yourself a return.

If you run out of power in case of emergency and you don't have enough solar to run your entire home, you can even connect to a portable smart generator that happens to be tri-fuel. That means you could then run that off of natural gas, propane gas, or gasoline.

So at the end of the day, over the last 141 days that I have had this set up at my home, I have not once worried about a power outage or a storm that's coming, knocking out my power and causing food to spoil or for my kids to panic. In fact, I've welcomed several storms and excitement, actually, to test the system.

Anker Solix E10: Price and availability

(Image credit: Collin Probst // Future )

Depending on how many batteries and accessories you get, your price is going to change pretty aggressively with this setup, especially if you start counting in install costs as well.

Your base system with one inverter and one battery is going to cost just over $4,000. Once you get up to the Basecamp Power Dock Smart Generator, you get up to $10,000 pretty easily.

You can get these through Anker or Amazon. One thing you will want to note is that, unless you are a licensed electrician, you're going to need to get one to get this all installed. Mine even had to consult with the city code and the utility company in order to get everything approved, since I am tied into the power grid.

(Image credit: Collin Probst // Future )Anker Solix E10: Unboxing and First Impressions

My entire setup showed up on a semi truck off a pallet because I got several batteries, the inverter, the generator, and other components needed to help with install.

From the first moment I started unboxing everything and looking at the quality, I was blown away with how sharp this looked. Once I found out that this was going to have to get strapped to the side of my house, I actually wasn't that upset because it looks so sleek and professional.

It doesn't look like it's some toy or cheap product that needs to be mounted, but actually it looks like it's floating. It looks like it's an addition to my home, not just a slap-it-on-the-side. It looks intentional.

Anker Solix E10: Design & Build Quality

Like I mentioned, I needed to have a licensed electrician install this, but once he installed it and handed it over to me, the setup process within the app was significantly easier than I'm sure his job was. All I had to do was pair the already set-up device to my app, answer a few questions on how the system was set up, and then I was good to go.

Now I have the ability to run more isolated breakers if I'd like. I can see my power output level. I can see when the smart generator is hooked up and trigger when and how to turn that on. I can check my battery levels.

Another huge thing that I noticed right away is that, much like some of the other units from Anker Solix, I can have my location set so that when there's a storm coming in, it will automatically top my batteries off.

Meaning that I can let them idle and sit at around 80%, maybe 90%, during the winter. When there's a storm, they will automatically top themselves off to help with the longevity of the battery while also still getting the benefit of having the entire battery's capacity when needed.

At first, I was thinking that I would need to have this installed in my garage, but once I found out that it was rated for extreme weather, extreme cold, and even extreme heat, I knew that I could have this outside my home, even in my Midwest temperament, and be just fine.

Anker Solix E10: In use

(Image credit: Collin Probst // Future )

One of these days I'll get solar added to my roof, but according to what I'm seeing, it looks like the solar input can take up to 9,000 W with two batteries which is madness if you ask me.

What I can speak to is the smart generator. I've tried it both with propane and with gasoline, and both have worked very well. It's a smart generator, meaning that it can automatically trigger when needed based on my E10 power panel, so already I'm a step ahead.

This feels almost like a Generac kind of style, where it will kick on when needed, but what's really cool is that I can disconnect and utilize this as just a generator if I ever needed it as well. If I'm working out on a property somewhere else, or my cabin property, or anything like that, I could bring this generator and get power immediately wherever I need it.

The other nice thing about this generator is that, since it is a smart generator, it has push-to-start, so I won't ever have to rip on that cord unless there's something that's going wrong. Lastly, this generator starts up pretty quickly and has its own built-in Bluetooth and Wi-Fi, so I can pair it to my app independently of the E10 power wall. It runs fairly quietly.

I've tested several times and barely notice it kicking on, and I don't notice it kicking on. When it comes to the power output on the inside, it seamlessly transitions, and I haven't even noticed a flicker or the inside of my house recognizing that there's power loss at all.

It's genuinely a bit hard for me to understand sometimes, even being in this world, but this one little generator has been able to run my entire home when testing. I've intentionally made the system go off-grid, and then my house will run simply off of this generator, and there have been zero drops in ability.

Admittedly, I'm not charging a car off of my house or anything else insane while doing that, but a full house with two fridges, microwaves, air fryers, two-stage HVAC, and 3,000 sq. ft., plus a basement. I've had zero issues running off of this one simple generator.

I used to have the F3800 Whole-home backup system through Anker. While that worked and was solid, I was very aware of the battery capacity, just in case there was ever an issue. Now, though, I don't have any concern at all because, worst-case scenario, I can run off of gasoline.

If I run out of gasoline, I can run off my two propane tanks that I have at the house. While I'm running those, I can go and get more gas if I needed to, or more propane. Down the road, I could hook up to my natural gas line as well.

This may not be for everyone, but I have had a hard time pointing people away from it when I've talked to Dee about Whole Home Backup Systems. Other than, of course, the cost and the fact that this is slightly different than what people have gotten used to when it comes to a Generac or Tesla Powerwall. When I explain just how beneficial my system is, it definitely gets their head turning and gets them interested in this for their own.

One final positive note is that down the road, if I choose to get an electric vehicle or expand or want to have some additional power outside of my house, I could run an independent circuit directly from this Powerwall and then control it from my phone. Anker allows me to customize the output, the schedule, and the control of the circuit independently from my house, and I can do it all from my phone.

Anker Solix E10: Final verdict

(Image credit: Collin Probst // Future )

The Anker Solix E10 Powerwall makes incredible sense for most homeowners, especially those who are looking for some flexibility and want to have the gas, propane, or natural gas backed up as well. Not only can I use this as a whole-home backup system, but then I can actually use each piece independently for more than what they originally used it for.

It is, of course, a bit of a headache having to consult with the local electric company to ensure that you can hook up your system in line with the grid, because that is a very real concern. It did cause some delay for my install; however, if you can get that solved, this is an absolute no-brainer for me.

Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future

For more off-grid essentials, we've tested the best portable power stations.

Categories: Reviews

Onimusha: Way of the Sword is another goliath in the action-adventure genre, satiating my appetite for epic, cinematic, and addictive sword-fighting encounters, despite some tedious segments

Mon, 08/31/2026 - 10:00

Onimusha: Way of the Sword has blown me away after 30 hours with its engaging, emotional, and immersive narrative, filled with epic combat encounters. Capcom nailed the sword-fighting in almost all areas, further aided by some of the best boss battles I've ever played in the action-adventure genre.

Review info

Platform reviewed: PC
Available on: PS5, Xbox Series X, Xbox Series S, PC, Nintendo Switch 2
Release date: September 4, 2026

The enemy variety in Way of the Sword appears a little weak initially, but fortunately, there is surprisingly a decent number of diverse enemy types to tackle, some of which will put players' skills to the test, and enemies that tie directly to some of the darker and morbid aspects of the story — giving me every bit of motivation to defeat those responsible.

Much like previous games in the Onimusha series, upgrades and enhancements work by collecting red souls from defeating enemies or by finding other necessary resources to stay well-equipped for more difficult encounters or boss fights (because there are many of them).

Capcom has blended elements from the beloved franchise with modern elements (notably thanks to the RE Engine, used in Resident Evil Requiem), creating a sword-fighting, narrative-driven experience that successfully revitalizes the franchise for future entries — and yet again, it proves that it's in the best form it's ever been in.

What it takes to be the strongest

(Image credit: Capcom)

In Onimusha: Way of the Sword, we follow Miyamoto Musashi, a confident young samurai looking to climb to the very top to be the best swordsman there is, battling rivals and those with the same goal. When an encounter with a fierce rival, Sasaki Ganryu, goes wrong, both Musashi and Ganryu are thrust into lives and roles neither could ever expect.

Genma (demons) are seeping into Kyoto, Japan, from the depths of hell, and chaos is unfolding, with the lives of innocents taken brutally, and formidable Genma tormenting those who are vulnerable.

Musashi and Ganryu seek the same goal: master the blade and become the ultimate swordsman. However, both will eventually learn that far more important matters are at stake: humanity's attempt to repel Genma is in dire need of attention, and with Ganryu led astray, it's up to Musashi to forge the right path to heroism.

Equipped with Oni gauntlets, Musashi and Ganryu possess strengths far above the ordinary human, with plenty of abilities to challenge and defeat Genma. However, as expected, with that power comes plenty of responsibility.

Do strength and power derive from one's own efforts? Is it honorable to seek absolute power with the sacrifice of innocents? These are questions Musashi is left to answer throughout his journey, learning through victory but also through trial and error, ultimately creating an engaging rollercoaster that kept me on the edge of my seat.

Musashi is far from perfect in his use of Oni powers, but the character's development throughout the Way of the Sword and his bravado (significantly amped by the face model of the late and legendary Toshiro Mifune) are the strongest aspects of the game, keeping you coming back for more after each main story mission.

Miyamoto Musashi shines in every single cutscene, with a level of charisma that accurately represents the legendary Japanese figure, Musashi himself, and Toshiro Mifune's prowess. (Video Credit: Capcom)

As much as Onimusha: Way of the Sword maintains a strong focus on sword combat, it's very much a strong cinematic experience, with cutscenes that are absolutely phenomenal. The level of detail in every character's facial expressions and speech makes it feel like you're watching a movie at times.

Unfortunately, that makes the switch back to gameplay and dialogue sequences quite jarring. It's not that the visuals aren't great during gameplay; it just doesn't match up to those cinematic sequences, and I found myself constantly wishing gameplay looked as great as those important cutscenes — but ultimately, those beautiful visuals are designed for what's most important: the story.

Exceptional, addictive sword combat

(Image credit: Capcom)

Unsurprisingly, the combat in Onimusha: Way of the Sword is fantastic, taking fundamentals from what series veterans are accustomed to, alongside new and exciting skills, making every encounter entertaining.

As mentioned in my preview, the Issen technique makes its return, allowing players to viciously strike enemies right before being hit, and it makes for an incredible spectacle.

More importantly, parrying and deflecting are pivotal to overcoming foes in Way of the Sword. Just like Sekiro: Shadows Die Twice by FromSoftware, both defence options significantly deplete enemy stamina or 'posture', leaving them open to attacks for huge damage.

Way of the Sword treats Sekiro's 'deathblows' slightly differently; instead of one central area to attack, players have several options for areas to strike against bosses.

In scenarios where Musashi runs out of Hozuki (used for quick healing), most bosses will have a limb or part of a weapon (notably with the Byakue boss) highlighted in purple that is filled with red, yellow, blue, and purple souls, but does less damage to the enemy compared to the traditional main attack.

It's an aspect of combat that creates a dynamic back-and-forth between Musashi and various bosses, especially if you need more yellow souls for health from dealing too much damage earlier on.

Patience is key when attempting to execute Issen or Chain Issen, as the timing window is very narrow, more so than those for parries and deflects. When mastered, though, you'll overcome most enemies with ease. (Video Credit: Capcom)

Capcom did promise that enemies further into the game's story would be more difficult, after players voiced concerns that the demo was too easy. While I can say that endgame enemies are certainly more formidable and aggressive, some even making me sweat when in larger numbers, most basic enemy encounters are still easy.

This is directly due to Capcom's design for Way of the Sword's combat, which is very obviously focused on replicating samurai-like fights, taking after historical samurai duels that often ended in a single strike. Enemies won't attack Musashi in groups, making clashes with enemies easy, but I can see what director Satoru Nihei was aiming for with slower, more deliberate, and steadily paced sword clashes.

Fortunately, once you beat the game, you'll unlock the hard mode, Carnage, which is encouraged for use in New Game Plus. This raises the stakes to a new level, as a single hit could result in death, similar to Sucker Punch's Ghost of Tsushima and its Lethal difficulty.

While that doesn't directly address the fundamental aspect of enemies not attacking Musashi all at once, it will keep players on their toes to remain efficient in combat.

Musashi is an absolute badass in every scenario he's put in (Image credit: Capcom)

Onimusha: Way of the Sword genuinely has some of the best animations I've ever seen in any video game, particularly when parrying. Musashi oozes so much swagger in every single fight, making his confident and cocky attitude shine through combat, not just dialogue and cutscenes.

At the same time, I was slightly disappointed to see that Musashi's katana is the only primary weapon to use throughout the game. Yes, you'll find Oni Armaments on the journey, which effectively act as secondary weapons, but they require blue souls to pull off special attacks. It's a step away from a series tradition, where characters like Samonsuke or Jean Reno had a wide arsenal of weapons to use on the fly.

The game excels at its parry and deflect animations, but is surprisingly lacking in the number of animations for enemy finishers — and I couldn't help but feel like another primary weapon besides the katana would instantly fix that.

Nonetheless, Onimusha: Way of the Sword's boss fights make up for it, as they are easily the standout in an already immersive and addictive game experience. While some of the boss encounters are repeated too often, particularly during the game's climax, they are easily among some of the most epic boss battles I've played in games.

Besides the final boss battle, Dohatsu-ten is a strong favourite of mine, putting my reflexes to parry fast attacks to the test, and its design reminds me of Capcom's very own familiar and beloved half-demon, half-human demon hunter, Dante. (Video Credit: Capcom)

Best Bit

(Image credit: Capcom)

Onimusha: Way of the Sword has several breathtaking boss encounters from start to finish, but the very final boss fight is perhaps now among the best I've ever played in gaming. Without diving into spoiler territory, it was a battle that gave me the true sword fighting back-and-forth I was yearning for throughout the game. Capcom nailed this boss encounter, as it quite literally pushes you utilize every single skill and maneuver Musashi has learned, to overcome an incredibly ferocious and fast foe — and I can only imagine how challenging it will be on the hard mode difficulty.

If difficulty is a major concern, fear not, because not only are the boss fights a fantastic spectacle, but they're also very challenging. Bosses will often launch attacks (where swords have a purple glow) that can't be dodged or blocked, so players must parry or deflect them or lose plenty of souls in the process.

Losing souls from being hit by an enemy's unblockable attack is very risky, as they'll be collected and used to make them even stronger mid-fight — and this is the last thing you'll want to happen during the final boss fight, which I won't spoil.

Players will also have to look out for bosses attempting to grab Musashi by hitting the dodge button just before it lands, as mistiming this results in serious damage and can single-handedly decide a fight. Pulling off well-timed dodges, parries, deflects, and counters to grabs makes the entire combat experience addictive, and once you unlock the Oni transformation, the game takes a new leap to greater heights.

What about performance?

(Image credit: Capcom)

I played Onimusha: Way of the Sword on my main desktop gaming PC, equipped with an RTX 4080 Super and an AMD Ryzen 7 5700X3D processor, and performance was the least of my concerns. Through most of my 30-hour playthrough, I played at maximum graphics settings at the 3440x1440 display resolution, with DLSS Quality enabled, and consistently stayed above the 100 fps mark.

When testing the game on my Lenovo Legion Go S Z1 Extreme handheld gaming PC, I could easily hit around 40fps with graphics settings preset to medium, with FSR set to balanced, at around 24W (power consumption).

This is another Capcom game that runs very smoothly, which was a worry considering some of its semi-open world hubs. The RE Engine seems to struggle in open-world (open-area) games like Dragon's Dogma 2 and Monster Hunter Wilds, rather than those with linear environments in Capcom's Resident Evil games.

I did experience a few odd moments of heavy frame rate dips during some cutscenes, but these were few and far between, so it didn't break the flow of important narrative development.

There is full ultrawide support in both cutscenes and gameplay, which isn't exactly common for PC ports, as the former is often restricted to the 16:9 aspect ratio.

Should you play Onimusha: Way of the Sword?Play it if...

You love games that heavily rely on parries and counters
Onimusha: Way of the Sword is a sword-fighting fan's dream, with enough combat and duels that will keep you addicted to rematching the toughest bosses, and frankly, should be enough to encourage a second playthrough.

You love the Onimusha games
Without a doubt, Onimusha: Way of the Sword is the best game in the Onimusha series, with Capcom managing to keep mechanics from the original games while adding new content for a modern audience, thanks to the help of the RE Engine.

Don't play it if...

You're looking for a soulslike challenging experience
Onimusha has never been, and seemingly never will be, the franchise that follows in the footsteps of soulslike experiences. Way of the Sword is challenging, but it doesn't punish players for mistakes in the same way something like Elden Ring or Lies of P would.

You hate repetitive boss encounters
Boss fights are the highlight of Onimusha: Way of the Sword, but it's clear to see that there are far too many boss battles that are repeated at different segments of the game.

Accessibility features

Onimusha: Way of the Sword has plenty of accessibility options, notably color blindness aids alongside visual and auditory accessibility presets. Within those presets lie options such as subtitles (toggle on or off), subtitle size, subtitle background, menu text size, and HUD size.

There are also numerous options to change the blood color, disable dismemberment, remove action prompts, and motion sickness reduction settings.

Players can also change keybinds for mouse and keyboard play, while there are several different options for sprint control (toggle or hold), deflect control, menu cursor speed, and even one to disable the Windows key's functionality.

The game ships with DLSS 4.5 and FSR 3 frame generation, CPU performance presets, and ray tracing, which doesn't seem heavy to run — at least on a high-end gaming system.

How I reviewed Onimusha: Way of the Sword

(Image credit: Capcom)

Most of my 30-hour playthrough of Onimusha: Way of the Sword was on my main gaming PC, using the LG 45GS95QE OLED ultrawide display, providing exceptional immersion thanks to its 800R curvature.

During my trip to Gamescom, I put Onimusha's performance to the test by lowering my Lenovo Legion Go S handheld's TDP as much as possible, and was quite impressed by how steady it was around 40fps. It's certainly possible to achieve 60fps, but it would require lowering graphics settings further and increasing the TDP.

First reviewed August 2026

Categories: Reviews

Lenovo ThinkPad P16s Gen 4 review: A surprisingly slim mobile workstation that easily handles CAD and AI workloads

Mon, 08/31/2026 - 09:35

I've always been a big fan of the ThinkPad lineup. Although that's a very clear lineup, split across the S series, the E series, and beyond.

The S series is the slimline series, and even with a 16-inch laptop, the fact that they can keep it this lightweight is pretty impressive. It begs the biggest challenge: what backpack are you going to put it in? Not necessarily if you want to carry it with you or not.

This is the kind of laptop that you want to bring with you if you need some serious power and some screen real estate, but not necessarily a high-power CPU. I wouldn't bring this with me if I'm trying to edit video or push some 3D renderings or anything like that. If I'm doing coding work, need some serious CPU on the go, and want that bigger screen without breaking my back carrying it around, then this is one I would strongly consider.

It is supposed to be a desktop replacement, after all. One thing that Lenovo loves to talk about with this laptop is its ability to run CAD at a desktop performance level, even without the BVR GPU. The RTX Pro 500 Blackwell GPU is plenty good enough for most 3D renderings and mobile work.

Lenovo ThinkPad P16s Gen 4: Price and availability

(Image credit: Collin Probst // Future )

The ThinkPad P16s Gen 4 is widely available from both Lenovo and online retailers like Amazon and B&H Photo. You can pick up the Ultra 7 with 16 GB of RAM and 512 GB of storage for around $3,000, but it comes in a range of configurations.

That's about what we'd expect for a workstation packing this sort of power, and puts it around $2000 cheaper than the behemoth ThinkPad P16 Gen 3.

It's available with an Intel chip in the US here and UK here via Lenovo. For the AMD version, Lenovo has it in the US here and the UK here.

(Image credit: Collin Probst // Future )Lenovo ThinkPad P16s Gen 4: Unboxing and First Impressions

I'm fairly certain that unboxing every single Lenovo laptop that I've ever opened has been nearly the same exact experience. So much so that I frequently have to properly label the boxes so that I don't get them mixed up when I'm reviewing several ThinkPads at one time.

With all that being said, there's nothing fancy or outrageous about the ThinkPad unboxing, and that's honestly one of the things I love about them (and one reason, beyond hardware, that I suspect they're a business favorite). The unboxing experience very matter-of-fact.

Taking it out of the box, I was impressed that the laptop is just as slim as Lenovo claims. While it's not the thinnest of my laptops, it's not even the thinnest of all the ThinkPads I have right now, it's startling how well-designed it is considering how powerful this machine is.

Lenovo ThinkPad P16s Gen 4: Design & Build Quality

It's almost boring to talk about Lenovo laptops when it comes to reviews and design and build quality, because they all look almost identical: just slightly different thicknesses and minor changes, but nothing major.

In a sense, that's one of the major strengths, though. They all have phenomenal build quality. It's one of the reasons so many businesses rely on them: they are built to last and to be used and abused, not just looked at as a pretty showcase device.

As all good performance business devices should, the ThinkPad P16S Gen 4 has a MIL-STD-810H-tested build and a spill-resistant backlit keyboard.

It still feels snappy and comfortable to type on all day long. It has a large trackpad, great ports, the track point that people either love or hate, and even core features such as a privacy shutter and human presence detection.

Lenovo ThinkPad P16s Gen 4: In use

(Image credit: Collin Probst // Future )

I've been jumping in and out of this laptop, along with several others, for the last 100 days or more. So far, it's been able to handle even my most demanding AI business workflows. Yes, while I do write all these reviews by myself without any help from AI, there are several other clients that I have in my day-to-day jobs that I do utilize AI heavily for.

In those times, I'm running several chats at one time across ChatGPT, Claude, Notion, and even Gemini. Sometimes my computer can definitely get slowed down on some of my testing machines.

This one, however, seemed to hold up pretty well, even with multiple AI workflows at the same time, which is pretty impressive. It could be because of its RAM or just the powerful CPU, but either way, this machine gets the work done.

Of course, we are using this for day-to-day office work as well. For basic admin, this machine is overkill and will do it without any problem. The 16-inch screen is great for spreadsheets, research, email, really anything that you need to get done in a business context. But where it really shines is heavy CPU Tasks on the go.

I carry a MacBook Pro 14-inch every day, and that seems just about the largest I normally want to carry. Most 16-inch laptops that I try to carry in my normal backpack are a little bit too big, but the ThinkPad P16S Gen 4 does fit in my normal backpack size. If you are looking to get one and you're curious, that's good news for you.

Further, if you are one of the people who are lucky enough to be in a constant work-from-anywhere or remote work environment or job, and you need something that can handle every workload, this one is a phenomenal option.

Purely for research purposes only, I spent an afternoon at a coffee shop working away at this laptop, and it was very comfortable. It wasn't too big for the awkwardly small café tables and some coffee shops, nor was it awkward to pull out. I was able to get my work done.

The keyboard is comfortable enough to type on all day long. The mics are strong enough for dictation in virtual meetings, and it actually didn't even sound too bad using the built-in mics for virtual meetings in a moderately background-noise-filled coffee shop

Lenovo ThinkPad P16s Gen 4: Final verdict

(Image credit: Collin Probst // Future )

If you're a developer on the go, if you work on GPU-light but CPU-heavy work, or if you just need a machine that won't slow down with your heavy workloads, then the ThinkPad P16S Gen4 may be something worth considering for you.

This slim moniker really does showcase itself here, all while keeping the same trusted and reliable ThinkPad build. This is definitely designed for mobile pros but could be utilized by just about anybody if the build and specs are right for you.

Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future

For more powerhouse performers, we've tested the best business laptops, the best mobile workstations, and the best laptops for engineering students, which is one area I'd definitely recommend the ThinkPad P16s Gen 4.

Categories: Reviews

Pages