There are many software packages out there designed to help you organise and edit your photographs, so how do you differentiate yourself from the herd? How about by using AI as much as possible? That’s the direction Skylum’s Luminar Neo has taken, and I’ve taken a look at the results.
Skylum Luminar Neo: Pricing & plansYou can pick up Luminar Neo with a 7-day free trial by clicking here.
First the good news: it’s multi-platform, available for both Windows, Macs and mobile platforms (Android, iOS and Chrome). And here’s even better news: you’re not expected to rent this software; it’s a one-time purchase.
The desktop-only version (for either platform) will set you back just under €100. Choosing the ‘All Platforms’ options for around €130 gives you cross device editing, be it on desktop or mobile machines. That tier also allows you to upload your chosen shots to a web gallery.
Finally, the top level will allow you to edit your shots online (that feature isn’t yet ready for prime time), and incudes one year of ‘Luminar Prime’, for €160.
It’s worth focusing on that subscription for a little bit to explain something important: this is a true subscription. It’s like when you subscribe to a magazine: cancel your subscription, and you still have those issues that dropped through your letterbox. Here, subscribing to Luminar Prime unlocks new features over time, and these unlocked features remain yours once your cancel. This is a very important distinction. Once the first year is done, it will cost you around €5 a month or €60 a year to keep using it.
Between you and me, that’s what all subscriptions should be about. Anything else is just rentals.
Be aware that these prices fluctuate a lot and there might be better deals available when you check their website.
Skylum Luminar Neo: Interface(Image credit: Future)The installation process offers you the option of adding a Luminar plugin to either Photoshop, Lightroom, or both, which would offer you all the tools inside a more familiar interface. I though it was important to mention, even though I won’t be looking into this option in this review.
Reviewing so many similar apps as I have, you end up recognising the interface instantly as most are incredibly similar. Sure the sidebar may be on the left instead of the right, but the tools and especially the icons used to activate them are immediately recognisable.
Not so with Luminar Neo, and that’s actually a very good thing. Rather than handing you a bunch of icons for you to use on your photos, the tools are divided into categories. And forget about icons: each section is clearly labelled. Take ‘Essentials’ for instance. That’s where your usual color correction is located, in such submenus as ‘Develop’, ’Enhance’, ‘color’ and ‘Detail’.
Working on a Landscape? Then you need to explore the ‘Landscape’ category, where you’ll find such tools as ‘Sky’, ‘Atmosphere’ and ‘Water Enhancer’. Taken a photo of a person? ‘Portrait’ is where you need to go. ‘Professional’ is where some more advanced options are stored, and ‘Creative’ allows you to let loose and have a little more fun with your image manipulation. Clear, simple, and effective.
Skylum Luminar Neo: Tools(Image credit: Future)A good, intuitive, and easy to use interface is one thing, but if the tools aren’t up to scratch, it’s just a fancy wrapper full of useless features.
Thankfully, Luminar Neo is far from that.
Let’s start with Presets. Luminar Neo comes with a bunch of them, many of which are free. Those that aren’t can be identified with a small shopping trolley icon top right of their thumbnail. As always when it comes to presets, their results will vary but what I appreciated was the fact the software analyses your image and presents you with categories that should match what you’re working on.
For instance I brought up a photo of a sunrise, and was offered ‘sunsets’, ‘scenery’, and ‘easy landscapes’ menus for me to explore. Easy, simple, and of course you’re by no means forced to go down that selected road, but it’s nice when an app feels like it’s working with you.
How you work on an image is done with the help of sliders, which makes the process very simple to do and undo. If you’re more of a ‘type the value into a field’ kind of person, you’re free to do that too. You’re also able to work with multiple layers, letting you perform more complex effects on a photo with ease.
You can achieve very good results on your own that way, especially if you know what you’re doing. This is very similar to practically every other image manipulator out there. But what about all that AI I mentioned at the start? That’s where it gets more interesting.
Skylum Luminar Neo: AI(Image credit: Future)This is not generative AI. There are no text prompts or anything like that. This kind of AI is a collection of complex algorithms designed to facilitate a particular task. Think of them as a powered screwdriver as opposed to a manual one. If that’s still not your thing, you can recognise them in the sidebar as those tools are all labelled with a small orange ‘AI’ next to their name.
But I wouldn’t dismiss them out of hand so quickly myself. Let’s take a look at a few examples, starting with ‘Sky’.
This is the big tentpole feature you might have seen in adverts as it offers the most striking alteration: Luminar Neo can analyse your image, identify the sky and replace it with another. You have 35 to choose from, with the option of acquiring others.
Replacing the sky can be seen as a simple process: just mask what’s blue, cut it out, and add a new sky behind it on a separate layer. But ‘Sky’ goes further, noticing where the sky is reflected somewhere in the image and applying the change there as well, even going as far as altering the colors of the rest of the photo so it blends in with its new sky.
The result can be fantastic. I have a photo of the Eiffel Tower I use to test such features out, as the complex metallic mesh can be a challenge to mask, and Luminar Neo passed with flying colors.
It’s not always perfect of course, but most of the time the results were impressive, and achieved in seconds whereas it would’ve taken me ages to do the same manually.
Speaking of masks, Luminar Neo doesn’t have a dedicated tool in its list, but that’s because it’s embedded into pretty much all the others: select a tool, and switch to its ‘Masking’ tab to affect the image solely on a section of your choice. AI does the selection based on your input. For instance I told it to select the human in a photo, and after a few seconds, the mask was perfectly done with no further input needed from me.
The Bokeh AI tool is also excellent, giving you control over where the effect should be thanks to an easy to understand interface where you drag a slider up or down to limit the extent of the effect.
Perhaps the tool I was most impressed by was the Light Depth Tool. Somehow, it does its best to recreate the 3D environment the photo was taken from, allowing you to alter the light in various ways, even placing it in between objects. It’s most impressive.
Skylum Luminar Neo: Extras(Image credit: Future)And that’s not all: there’s an ‘Extras’ section where you’ll find tools to help you restore old photographs, increase the resolution of an image, stitch shots together to create a panorama, and more.
Luminar Neo offers you a wealth of features to help you fine tune your images to perfection.
If there’s one thing I’m not that impressed by though, is its organisational feature. Sure you can find folders on your computer and add them to the left sidebar, or create albums and add photos to them, but to be honest, that kind of functionality has been available for years and has been surpassed by most of its competitors.
Put it this way: it’s no threat to Lightroom on that front and maybe that’s why you were given the option to insert Luminar's tools into Lightroom upon install: this software knows its limitations.
Should I buy Luminar Neo?(Image credit: Future)Buy it if...You’re a professional looking for a powerful, well designed and versatile image manipulator which you can actually own rather than subscribe.
You don’t like interfaces that are too different from what you’re used to, and would need software that can handle organising your photos beyond just adding basic folders and albums.
FutureFutureFutureFutureFutureHow I tested Skylum Luminar NeoAs always, when an app is compatible with multiple platforms, I choose the underdog (ie the Mac). I used a laptop running a high-end Apple Silicon chip for my testing, and my machine had no problem with the software.
I did notice that when using some AI tools, it can take a few seconds for the analysis to be done, and the computer’s thinking process was too subtle for me.
Yes there’s a small message beneath the image saying ‘Analysing’. But if you’re more focused on the sliders at the time, you could end up wondering why dragging them isn’t having any effect - until the AI work is done and your slider went to 100, blowing the image up. Thank goodness, like all modern image processing app, everything you do to a photo is non destructive.
For more picks, we've tested the best photo editors.
The tagline for Beyerdynamic’s latest consumer-grade, ANC-equipped wireless headphones is “What is your why?” — and, unfortunately, “Why?” was the first question on my lips when I first listened to them. A lacklustre sonic profile is accompanied by a lack of convincing dynamics, at least when listening actively in a quiet room.
My “why?” was answered in part by the Aventho Y’s own “why”: they are clearly designed to be used outdoors, to compete with a constant thrum of traffic and people and cut through accordingly. And this they do, quite commendably. The ANC is impactful, which is more than you can say for most headphones in this price range; there’s also a Transparency mode which is similarly effective outside. The long battery life is a genuine boon, as is the fact you can replace that battery with ease whenever it does eventually lose its edge.
A shoo-in for our best noise-cancelling headphones guide then? Not so fast. Better as the Aventho Y's performance is when on the move, it’s not saved wholly from its shortcomings. It’s necessary to visit the Beyerdynamic app to reintroduce some low end, and there’s still a sense that you’re not hearing songs as they ought to be heard.
Well-designed and well-priced though these headphones are — and excellent as that ANC is for its price — I can’t love the Beyerdynamic Aventho Y as much as I’d like to, purely for how poorly the sound is handled. Curmudgeonly as this review may at some points seem, I am no stranger to whimsy; I did really enjoy my time with these headphones. They shine in loud environments. Anywhere else, though, that shine is predestined to dull.
(Image credit: Future)Beyerdynamic Aventho Y review: Price & release dateBeyerdynamic is one of the pre-eminent names when it comes to matters of professional audio. The German brand’s reputation precedes itself, thanks to a near-faultless gallery of clean, clear and natural-sounding monitor headphones beloved by audio engineers and pro producers innumerable — and to say nothing of its microphones, too.
Beyerdynamic’s reputation in the wider consumer-audio world is less well-tested, though still hugely positive. The brand’s had its hands in MP3 player-era in-ears, gaming headphones and wireless earbuds over the last two decades, in the middle of which the word ‘Aventho’ first appeared. Most of these consumer-friendly audio interventions trucked in the same professional elegance as the brand’s pro-level interventions, with sharp lines or important-looking negative spaces; a stern-ness of design which makes this latest intervention all the more interesting.
The Beyerdynamic Aventho Y are a pair of wireless, ANC-toting over-ear headphones, and a clear signal of fairly naked ambition by the brand to appeal to a new generation of listeners. Some semblances of the Beyerdynamic signature remain, but they’re overtaken by a quartet of somewhat-bold color options and a somewhat-bolder, somewhat-existential marketing push to accompany them: “What is your why?”
In terms of succession, the Aventho Y is a young, hip relative of the Beyerdynamic Aventho 300 — which, specs- and price-wise, still appears to be the adult in the room. The Y, then, is a much more expressive and accessible piece of consumer listening gear, taking the long battery and solid audio philosophies of its late-Millennial Dad, cramming them into a pastel-colored knapsack and promptly running for the Reels.
At $149.99 / £129 / AU$280, the Aventho Y hurls itself right into the middle of an already-stacked field of affordable wireless headphones. So, is the Aventho Y’s “why” compelling enough to beat them?
(Image credit: Future / James Grimshaw)Beyerdynamic Aventho Y review: SpecsDrivers
45mm dynamic drivers
Active noise cancellation
Yes
Battery life
90+ hours (60+ hours with ANC)
Weight
316g
Connectivity
Bluetooth 6.0, USB-C, 3.5mm mic input
Frequency range
20Hz - 20kHz
Waterproofing
IP53
Other features
1m USB-C to USB-C cable, soft drawstring carry pouch
(Image credit: Future / James Grimshaw)Beyerdynamic Aventho Y review: FeaturesThe Beyerdynamic Aventho Y are an affordable set of wireless over-ear headphones, with active noise cancelling and a prodigious battery life to fuel it. More specifically, the Aventho Y boast 90 hours of non-stop listening, or 60 with ANC engaged — that’s easily a month of morning-commute listening, at least. And in the unlikely event that you burn through your Aventho Y’s juice prematurely, you’ll still have the rest of the day’s listening back in no time at all; a five-minute quick charge yields six hours of listening life.
Humongous reservoir of power aside, the Aventho Y sport a pair of 45mm dynamic drivers, serviced by a Bluetooth 6.0 receiver capable of Multipoint connectivity, and of decoding SBC and AAC codecs. On the face of things, it’s a real shame not to see some lossless aptX or LDAC support here, but practically speaking, AAC is fidelity aplenty for day-to-day listening.
That Bluetooth is, of course, two-way too; there’s a microphone on board for wireless phone calls, and some well-sized control buttons for playing, pausing and skipping songs without pulling your phone out. It’s also the means by which the Aventho Y connects to Beyerdynamic’s smartphone app, which allows control of ANC and user-preset EQ modes, amongst other things. As for physical I/O, there’s a USB-C port that supports both charging and wired listening, and a 3.5mm output for an add-on boom microphone (more details of which are yet to surface).
A big win for me on the features front — which you’ll hear more about later on — is the easily-removable, magnetically-attached ear-pads; behind them, you’ll find a replaceable battery and a tellingly-shaped hole for a USB-C dongle. The dongle is also yet to surface, but will reportedly enable low-latency Bluetooth connectivity to other devices, in tandem with better-quality audio from the aforementioned and as-yet-unreleased boom mic.
To be completely honest, my first impression of the Aventho Y’s performance was not a positive one. On connecting to my laptop and streaming some music from Qobuz, the out-of-the-box sound profile threw me for a loop; being accustomed to Beyerdynamic’s flat-response monitor headphones, I wasn’t expecting a near-telephonic treatment of high mids and voices from this consumer-focused entry.
Queens Of The Stone Age’s Everybody Knows That You’re Insane, taken from expansive 2005 slow-cooker Lullabies To Paralyse should be an urgent, propulsive assault of information from bright guitars to thudding bass and kicks, but the Aventho Y presents it as a peaky mess of honky leads and vocals. Why? Or should I say, “Y”? (Sorry.)
Some artists get a little bit of a better break than others. Interpol’s Turn On The Bright Lights demonstrated a clarity with respect to monophonic lead guitars, but at the expense of clarity in other areas. The snare in Untitled sounded boxed-up, restrained — as did the bass, which should swell and envelope but instead seemed stuck behind everything else, revving up in hopes of getting past. It’s a peculiar sensation, really. It feels like these headphones can’t fully handle the music they’re receiving, whether it’s through a lack of headroom, or a lack of vacancy for low end to thrive.
(Image credit: Future / James Grimshaw)It occurred to me, then, that I wasn’t testing the Aventho Y in the environment they were designed for. Marketing copy, express-yourself colorways and aesthetic ads of headphone-clad models dancing in public all point to the Aventho Y being expressly created for soundtracking your life outside. So that’s where I went.
And the experience was much, much different. Everything I’ve said about the default sound profile stands, but matters much less in public. Contending with the everyday noises of urban traffic means that honky high-mids turn, somewhat, into tactile presence. LA Priest’s latest LP Into The Sky is a gratuitously texture-rich compendium of electronic love songs, and had exactly the bite I was looking for while I waited for the bus.
Against the noise of the outside world, It’s less apparent that your music is straining against the limits of the headphones; it’s designed to compensating for a living, breathing world around you. The bass is still a let-down, but, luckily, there’s an app for that.
The Beyerdynamic app gives you control over a few features, including a customisable graphic EQ. Even just some slight adjustments between 60Hz and 200Hz brought back some essential thump and hum; I just don’t understand “Y” (sorry) the Aventho Y shipped with the sound as is.
I will also say, to the Aventho Y’s credit, that its ANC is frightfully effective — much more so than more expensive headphones I’ve tried before, and to an almost discomforting degree. It does introduce a hissy noise floor, so you aren’t getting a pristine listening environment with it engaged; still, it’s better than cranking the volume over the roar of a bus (or, indeed, the interminable TV-borne whinings of Tempting Fortune’s contemptible contestants while you’re trying desperately to finish a review about some wireless headphones. I mean, honestly).
The Aventho Y also sport a Transparency mode, which pipes a little more of your surroundings into your cans. It’s less effective than the ANC is indoors, but incredibly effective outdoors — albeit with that same underlying hiss.
Sound-wise, the Aventho Y are hard to score. They sound, frankly, quite bad out of the box and in a quiet listening space; they’re clearly not for active listening, or pairing with pricey hi-fi systems. But out and about, they deliver quite well, and especially so when it comes to more practical interventions like ANC and transparency mode. But they wouldn’t sound anywhere near as good as they could without app-based EQ intervention. It’s a mess of “buts”, and all a bit of a shame, really.
The Beyerdynamic Aventho Y are demonstrably nice to look at, courtesy of the smart-and-simple ear cup design and those four tasteful color options. My set are this peachy pastel orange, with tinted cream ear and head cushions — an easy-going Zillennial two-tone, offset by metal-effect silver plastic brackets. That they are plastic is, of course and always, a bit of a shame, but it’s no surprise in a consumer-forward set of wireless over-ears (and even less of one for a pair that ask only for $149 / £129).
A big win for me is the repairability of the Aventho Y, typified by the magnetically-secured ear pads that pull off with a firm-but-fair tug. Beyerdynamic offer velour-clad pad upgrades, too, for an even comfier experience.
Removing the left ear pad unearths the enclosure for the Aventho Y’s battery, allowing easy replacement should your battery eventually die on you. This level of replaceability has been historically rare for consumer-grade products in the same camp as the Aventho Y, which makes this a real breath of fresh air — but only so much in the way of props can be delivered Beyerdynamic’s way.
With the EU now mandating the self-repairability of consumer electronics from 2027, it’s no surprise that new products increasingly bear such customer-friendly design choices, and it’s a shame that, after years of impenetrable products from more unscrupulous brands elsewhere, it’s such a pleasantness to encounter them. Still, I’m allowed to be impressed for now.
While I’m here, I’m also pretty keen on the physical buttons in the ear cups — particularly the literal switch that turns the Aventho Y on and enables Bluetooth pairing. That kind of tactile responsiveness is similarly rare, and hugely welcome.
Finally, I can’t fault the Aventho Y at all on comfort. I could easily wear them for hours (and actually, I have), thanks to some light, comfy ear pads and a fold-up design that lets them sit around your neck without applying undue pressure. How these are put together, and how they interact with you as owner, are easily some of the best things about these cans.
At $149.99 / £129 / AU$280, the Beyerdynamic Aventho Y undercut a lot of its large-battery-having, ANC-toting contemporaries as an affordable piece of outdoor-listening kit. There are cheaper headphones, yes, but rarely do headphones as cheap as this offer up to 90 hours of uninterrupted listening and a noise-cancelling algorithm that actually, tangibly makes a difference to your day-to-day. It’s rare also to see a pair of headphones so smoothly designed. The aesthetics and execution are undeniably great. But…
I just can’t get over that initial disappointment I felt listening to them for the first time, at my desk. Beyerdynamic is capable of so much more than this, so it’s difficult to understand “Y” (sorry) they settled on this sound at this price. Without the steady thrum of urban life to contend with, there’s nowhere for the Aventho Y’s sonic shortcomings to hide — and EQ isn’t quite enough to fix them, either.
Again, it’s clear that the Aventho Y’s own “Y” is facilitating some groovy movement in your day-to-day. And they do succeed in that regard, but still need a bit of a helping hand along the way. If you do just want a set of wireless headphones for drowning out the wider world during your commutes, these are excellent value for money. Elsewhere, it’s much harder to truly see what the “why” is with them.
Section
Notes
Score
Features
The Beyerdynamic Aventho Y is a pair of wireless over-ear headphones with 90-hour battery, some brilliant ANC and Bluetooth 6.0 Multipoint connectivity — though it’s lacking hi-res codec support.
4/5
Sound quality
Unfortunately, the Aventho Y’s sound quality just isn’t there out of the box. There’s no decent low end to speak of, and the high mids are peaky to the point of discomfort. This makes sense when they’re competing against public hubbub, but even then, the only way to create any weight is by boosting lows in the proprietary Beyerdynamic app.
3/5
Design
The design is (nearly) the best thing about the Aventho Y, with a choice of four tasteful colorways and some clever replaceable ear pads — not to mention a neat fold-up design and hours of listening comfort.
4.5/5
Value
There’s some undeniable value to the Beyerdynamic Aventho Y. The ANC is great, the build quality is good for the price and the battery life is even better. The sound lets them down, insofar as they aren’t wholly suitable for anything but out-and-about.
4/5
Buy them if...You’re always on the move
The long, long battery life is already reason enough to lean into the Aventho Y as your new pair of leaving-the-house headphones, but consider also the fetching color options, on-board controls and outside-friendly sonic profile.
Active Noise Cancelling is a non-negotiable
I’ve found it hard to get good ANC at all, to be honest, let alone at a functionally budget price point. The Beyerdynamic Aventho Y are frankly excellent for noise cancelling, and well worth it for less chaotic commutes.
You’re after wireless headphones for sit-down listening
Quite simply, the Beyerdynamic Aventho Y are not designed for active listening. Between the marketing, battery life and color scheme, they’re begging to be worn out and about, where a near-telephonic frequency response with a honky preference for upper-mids makes far more sense.
You want stellar sound out of the box
The Aventho Y don’t really become themselves until you’ve spent some time tweaking EQs in Beyerdynamic’s app — which, incidentally, you can only do on a smartphone.
Beyerdynamic Aventho Y
Sony WH-CH730N
JBL Live 780N
Drivers
45mm dynamic
30mm
40mm
Active noise cancellation
Yes
Yes
Yes
Quoted battery life
90+ hours (60+ hrs with ANC)
75 hours (50 hrs with ANC)
80 hours (50 hrs with ANC)
Weight
316g
207g
270g
Connectivity
Bluetooth 6.0, USB-C, 3.5mm mic input
Bluetooth 6.0, 3.5mm
Bluetooth 6.0
Frequency range
20Hz - 20kHz
20Hz - 20kHz
10 Hz - 40 kHz
Waterproofing
IP53
No rating
No rating
Extras
1m USB-C to USB-C cable, carry pouch
3.5mm to 3.5mm cable
USB-C to analog cable, carry pouch
Sony WH-CH730N
These come in a little cheaper than the Beyerdynamic Aventho Y, but sport many of the same features — and a few of the same shortcomings. There’s good ANC and great battery life, but, unlike the Aventho Y, no USB-C audio passthrough.
Read our full Sony WH-CH730N review
JBL Live 780NC
For slightly more money, you could get yourself a much more aggressively-hued set of these JBL over-ears, with formidable ANC and some respectable sound performance to match. These are solid performers at a solid price.
Read our in-depth JBL Live 780NC review
The Beyerdynamic Aventho Y spent around 4 weeks with me, in a variety of listening situations both active and passive. They were tested partly at home, connected to my HP Pavilion 15 laptop via Bluetooth and receiving music from the streaming service Qobuz, as well as from my digital audio library. I also took the Aventho Y out and about on my various day-to-day gallivantings, connected to my Samsung S23 FE via Bluetooth and, again, listening to music streamed from Qobuz.
Read more about how we test at TechRadar
As the leader in cartridge-free printing, Epson also has the largest range of refillable printers, which now includes this entry-level all-in-one promising ultra low-cost color printing at home.
The white Epson EcoTank ET-2980 has several variants, including the black Epson EcoTank ET-2950 tested here, but it’s essentially a budget tank printer aimed at the small office or anyone who wants to cut their consumables bill by 95%.
Yes, bottled ink is that much cheaper than cartridge ink. But can it compete with the Brother DCP-T580DW and HP Smart Tank 210 to become one of our best ink tank printers?
Epson EcoTank ET-2980: Design and build(Image credit: Future)SpecsType: color inkjet tank multifunction printer
Functions: Print, copy, scan
Connectivity: USB, Wi-Fi
Data storage slots: None
Max print speed: 15ppm
Max paper size: Letter/A4
Print quality: 4,800 x 1,200 dpi
Memory: unknown
Apple AirPrint: yes
Consumables included: 4 x bottled ink (6,600 black or 5,500 color pages)
Dimensions/Weight: 375 x 347 x 187 mm (WxDxH)/11.4lb/5.2kg
For an all-in-one bulk tank device with an integrated 8.5" x 11" scanner, the Epson EcoTank ET-2950 is reasonably compact. It replaces the outgoing Epson EcoTank ET-2850 and as well as printing a little faster using an improved printhead, I think it looks better too.
The tanks protrude less, and yet they’re still conspicuous enough that it’s easy to see the ink levels at glance. And I’m glad to see the capacity is the same, because Epson’s reservoirs are slightly larger than those of the Brother DCP-T580DW. The sleeker replacement also gets an attention-grabbing LED on top that illuminates usefully when there’s printing in progress.
There’s no touchscreen on this budget model, but the 1.4” color LCD is clear enough and the control panel tilts upwards conveniently. There’s no USB Host port and no paper input tray. Instead, you have to load paper in the rear tray, which can only hold up to 100 sheets. The whole thing weighs little more than 11 pounds making it feel insubstantial, so it’s somewhat surprising to find that the out-tray is motorised. That’s really the only luxury.
Epson EcoTank ET-2980: Features & specifications (Image credit: Future)We’re so used to seeing cartridge printers packed with features and selling for fifty bucks and less, that tank printers, which are not being subsidized in order to make money from their ink, can seem expensive.
Likewise, the feature set on this US$240 EcoTank could also look slim. As mentioned, there’s no touchscreen, no USB Host port and no paper drawer. There’s no ADF (automatic document feed) either, but these are all non-essential items that Epson has dropped to keep the price competitive.
Crucially, the Epson EcoTank ET-2950 can auto-duplex and has a flatbed scanner, unlike the HP Smart Tank 210, and it has Wi-Fi with AirPrint and Mopria compatibility. It can print on a wide variety of paper up to Letter or A4-size, including quite think cardstock, but its best feature is perhaps the generous amount of ink included in the box. Enough to keep you printing for three years according to Epson.
If you would rather have a printer with a paper input tray and an ADF for copying multiple documents at a time, you should consider the excellent step-up Epson Ecotank ET-3850 for around seventy dollars more. Or, if you don’t need auto duplexing or the scanning feature, you can save money with the economical HP Smart Tank 210.
Epson EcoTank ET-2980: Setup and operation(Image credit: Future)The Epson EcoTank ET-2950 comes with an easy-to-follow quick-start guide printed on a single sheet, but you probably won’t need it. When you plug in and turn on for the first time, the printer’s on-screen prompts will help you get your new printer online and printing the first test page in a matter of minutes.
Alternatively, you can use Epson’s free companion app for iOS and Android called Smart Panel to avoid having to enter your Wi-Fi password via the printer’s control panel.
Filling up with ink is also stress free as the capacity of the bottles matches that of the tanks. That’s 65ml for CMY and 127ml for black. And the keyed bottle necks mean you can’t pour the wrong color in the wrong tank. In day-to-day use, I’d say this is a user-friendly device, thanks to the reasonably sized color display and the intuitive companion app that really simplifies printing remotely.
Epson EcoTank ET-2980: Performance(Image credit: Future)The Epson EcoTank ET-2950 printed every test page on every type of media from card to envelopes without a hitch or a jam. It printed slowly but steadily with the quoted print speed of 15ppm for simplex mono printing proving accurate.
That slows to just 8ppm in color. In duplex mode, each page is turned over automatically and quite promptly, so long 2-sided documents can actually be printed out faster than the manual duplexing HP Smart Tank 210 despite its superior 22ppm print rate.
Black and white text pages are printed with crisp dark black characters that are smudge resistant and easy to read at small point sizes. Through the magnifying glass I can see evidence of overrun, but it’s not visible with the naked eye. If you need fast laser precision and rarely print in color, you should consider a mono laser printer like the Brother HL-L5100DN.
Color prints look rich and bright with well contained colors. It’s perhaps a tad too red and also slightly softer than some rivals. Epson is using its energy efficient Micro Piezo technology to deliver ink through a total of 784 nozzles. That’s 65% fewer than the cheaper HP Smart Tank 210 with its thermal inkjet system.
Although nozzle-count doesn’t equate directly with print quality (their quoted print resolutions are exactly the same) I think the Epson achieves less detail when it comes to printing photos at best quality on coated photo paper. For a business-oriented inkjet, its photo printing is perfectly acceptable, but it’s not a strong point.
Where the Epson EcoTank ET-2950 excels is in handling paper. I always find it annoying when there’s no front drawer and you have to load paper in the rear slot where it curls and collects dust. On the plus side, the paper path is straighter this way so the printer can feed through thicker media without causing a jam. I printed on envelopes, stickers and some pretty thick 300g/m² card with great results. The HP Smart Tank 210, for comparison, chokes on anything heavier than 200g/m².
The Letter or A4-sized flatbed scanner makes decent copies at 1,200 x 2,400 dpi resolution and is easy to operate with the dedicated ‘copy’ button. It’s a pity there’s no ADF to go with it, but at least it has a scanner bed, unlike the HP Smart Tank 210 which relies on your phone for scanning.
Epson EcoTank ET-2980: Consumables (Image credit: Future)The headline feature here is the three years’ worth of ink you’re getting in the box. To be more precise, that’s three 65ml bottles of colored ink and one 127ml bottle of black that should yield up to 5,500 color pages or 6,600 monochrome. That’s about the same as Brother, HP and Canon give away with their entry-level tank printers.
In this case, Epson’s 102 black ink is pigment-based, while the 102 CMY inks are dye-based because the quicker-drying pigment is better for smudge-free handouts. That’s different from the 106 inks Epson supplies with its photo printers which are all dye-based for their superior performance on coated photo paper.
Epson’s bottled ink is around 95% cheaper than its cartridge ink, though there’s nothing to stop you from using even cheaper third party bottled ink.
Epson EcoTank ET-2980: Maintenance (Image credit: Future)As with any inkjet printer, the printheads are liable to clog if left unused for long periods, but it’s easy to unblock any nozzles by running a cleaning cycle. Just go into the printer’s maintenance menu, choose one and it will automatically flush the nozzles with fresh ink until it can print a clean test page.
That detachable compartment at the rear corner of the printer is the maintenance box that catches any excess ink generated in this way and at some point in the printer’s lifetime, you may need to replace it.
Epson EcoTank ET-2980: Final verdict(Image credit: Future)Epson’s entry-level EcoTank all-in-one is short on features, but delivers crisp documents, vibrant color prints and exceptionally low running costs, with enough ink included to last three years.
Admittedly, there’s no touchscreen, ADF, USB Host port or even a front paper drawer, just a 100-sheet rear feed and small color display. But crucially, you still get automatic duplex printing, Wi-Fi and a flatbed scanner. Setup is straightforward using Epson’s excellent Smart Panel app, and the keyed ink bottles make refilling painless.
In my tests, the ET-2950 printed reliably on everything from envelopes to thick 300g/m² cardstock. It’s not a fast printer, but automatic duplexing is a welcome convenience. Pigment black ink produces crisp, smudge-resistant text, while dye-based colors look bright and punchy. Photographs are slightly soft and oversaturated towards red, but perfectly acceptable for occasional use.
The biggest attraction is the ink economy. Epson is putting plenty of ink in the box and replacement bottles are cheap. At around $240, the ET-2950 is relatively expensive upfront, but I think its low running costs, reliable performance and essential duplexing feature make it excellent long-term value.
FutureFutureFutureFutureFutureFor more top-performing units, I've tested out the best home printers.
You could be forgiven for having reservations going into Call of Duty: Modern Warfare 4. After all, both last year’s instalment, the much-derided Black Ops 7, and this game’s direct predecessor, Modern Warfare III, were clearly rushed and displayed a level of sloppiness that suggested the first-person shooter franchise had reached its breaking point.
Review infoPlatform reviewed: PC
Available on: PS5, Xbox Series X, Xbox Series S, PC, Nintendo Switch 2
Release date: October 23, 2026
Thankfully, it’s now apparent that these were merely temporary hiccups, and Modern Warfare 4 sees developer Infinity Ward successfully bring Call of Duty back from the brink with a fresh and exciting instalment that represents the absolute pinnacle of what the series has to offer.
The brilliant single-player story campaign delivers blockbuster thrills, there’s a stellar extraction shooter component filled with tense encounters in DMZ, and the core multiplayer experience is wonderfully crafted. It’s a package that you shouldn’t miss, and if it represents the trajectory of future installments, I’m confident that we’re in good hands.
Boots on the groundActivisionActivisionActivisionActivisionThe Modern Warfare 4 campaign is simply superb and sets a new benchmark for the series’ cinematic storytelling. It truly feels like the culmination of the last decade of the Call of Duty series – and not just the Modern Warfare games.
It all kicks off in the fictional city of Hajin, South Korea, where you play as the lowly Private Park. An unwilling conscript in the country’s mandatory service program, he and his squadmates are suddenly thrust onto the front lines when a routine patrol is interrupted by the start of a full-scale invasion by North Korea. There are some genuinely shocking scenes in the opening as your team pushes through a rapidly crumbling city, dodging artillery strikes and witnessing widespread civilian casualties.
The early death of a squadmate hammers home the high stakes, and the decision to focus on newcomers rather than the established Modern Warfare cast makes it clear that there’s no plot armor here. You genuinely start to care about these new arrivals, with each member bringing a distinct and memorable personality to the squad’s dynamic. Dunn, a US Marine embedded in the local unit, is a particular highlight. His cultural cluelessness and overconfident swagger are frequently played for laughs, stopping the otherwise bleak tone from becoming too unrelentingly miserable.
It’s a big departure from the almost Marvel-movie-like silliness of the recent Call of Duty games (I’m looking at you, giant Harper mission from Black Ops 7), and the focus on a ground invasion makes for a grittier story that’s more in line with the events of the original Modern Warfare trilogy. Despite this more constrained focus, there are still plenty of memorable set-piece moments, such as an invigorating sequence that has you rapidly switching between different team members spread out across an air base, working together to fend off waves of North Korean troops.
ActivisionActivisionActivisionActivisionThere’s even one massive, open-world mission that unfolds similarly to a Far Cry game. It’s far more in-depth than the disappointing open-zone levels of 2023’s Modern Warfare III, with resources to scavenge, outposts to clear, and even a few puzzles to crack. It took me a few hours to clear, and since I didn’t see everything, I really appreciate being able to return to it later from the mission select screen and pick up where I left off.
Park’s story plays out mostly linearly, but it's interspersed with missions that detail the exploits of the fan-favorite Captain Price in the lead-up to the invasion. Set a few years after the events of the previous game, which, spoiler alert, ends with Price executing his long-term adversary, General Shepherd, in the middle of the Pentagon, the former SAS soldier is now on the run and travels between global locations hunting the members of a sinister cabal.
Price’s segments offer all the bombastic Mission: Impossible action that made the recent Black Ops 6 campaign so great. One minute you're infiltrating a New York nightclub, and the next you’re speeding through Paris, hanging out the side of a car chased by legions of heavily armed gangsters. Vladimir Makarov, a terrorist Price pursued throughout the previous game, is unceremoniously killed off in just the second mission, paving the way for the introduction of Archer, a new foe portrayed by Mads Mikkelsen. Unlike Makarov, he’s a compelling villain with coherent motivations and, importantly, enough screen time to appear like more than an afterthought, as his predecessor unfortunately did.
While Park’s journey sees the recruit come face to face with the horrors of war but emerge victorious thanks to camaraderie and teamwork, Price’s is all about the dangers of abandoning your morals and sacrificing those close to you in pursuit of revenge. They contrast excellently and, while the messaging certainly isn’t subtle, the way both gradually converge for a unified conclusion is nevertheless highly satisfying.
Off the books(Image credit: Activision)The events of the campaign lead directly into the new DMZ extraction shooter mode, which sees mercenaries returning to the crumbling ruins of Hajin to find and extract abandoned military tech left over from the war. It plays like a simplified version of titles such as Arena Breakout: Infinite or Escape from Tarkov, with your chosen operator dropping in to the map from an upgradable field base.
This serves as a little hub world that you return to in between runs, offering limited storage for your scavenged gear, a 3D printer to forge new equipment with collected resources, a vendor for spending extracted cash, and intelligence detailing the non-player character (NPC) foes and most dangerous players active in the zone. While most extraction shooter games include base-building elements, it’s rare to see your home as a physical 3D space you can actually explore, and it makes the experience feel much more immersive.
You have three options when deploying into Hajin: Story Missions, Dynamic Ops, and Free Roam. Free Roam is the most basic: it drops you into the massive map with a few other players to pursue your own goals, whether that means finding good weapons to extract or trying to complete DMZ Orders, little challenges that guide your experience. Dynamic Ops is more guided, feeding you a stream of multi-stage objectives with increasing rewards for each that you manage to complete.
(Image credit: Activision)They’re assigned at random, with a good variety of options in the mission pool that range from taking out key NPC targets to taking over military camps and collecting stashed bombs to destroy marked vehicles. Story Missions, meanwhile, offer a more linear experience that feels much closer to the campaign.
One early highlight had my team of three taking on guards at an abandoned hospital, pushing our way up to the intensive care unit and wheeling a sedated enemy general to a rooftop extraction point under heavy fire. It was genuinely exhilarating, and became even more exciting when a squad of enemy players turned up to disrupt our mission.
Other players can appear regardless of your chosen mode, leading to tense PvP situations where one wrong move can mean the difference between a successful escape and losing your current operator and all of their equipment. Not every encounter has to end in a fight, though, as you can work together with enemy teams (and even opt to join them) if they’re willing to cooperate, leading to some fun emergent play.
Best bit(Image credit: Activision)Diving into DMZ with friends is a delight. The mode works fantastically as a duo, chatting with each other as you explore the huge map, complete objectives, and evade (or attack) rival squads.
I entered one story mission and quickly discovered that my team of randoms was absolutely terrible, with no apparent interest in actually completing our tasks, so I beelined to a nearby enemy squad shouting “friendly” until they sent me the invite to join them. I quickly led my new friends right back to my useless former teammates, and took great pleasure in helping mow them down to steal all their gear.
No two games feel the same, and if that wasn’t reason enough to keep coming back, Hajin itself is a treat to explore. It’s big, beautiful, and filled with a variety of aesthetically distinct zones ranging from freezing cold, abandoned North Korean villages to the rusty ruins of the South Korean city and even some of the barren outskirts of Russia. Even when you’ve seen it all, the dynamic weather effects can still take you by surprise, introducing challenging conditions like dense fog or heavy rainstorms that make it more difficult to navigate and spot foes.
DMZ would be a strong offering as a standalone extraction shooter game, so it represents incredible value when bundled in alongside the rest of the Modern Warfare 4 package. This is a mode that I’m going to be coming back to time and time again in the weeks and months ahead.
A fresh start(Image credit: Activision)Of course, no Call of Duty game is complete without a robust suite of core multiplayer modes, and Modern Warfare 4 delivers a truly superb experience across the board in this regard. The pacing of matches is perfect: noticeably snappier than the comparatively pedestrian battles of Modern Warfare II but not as overwhelmingly rapid as the wall-jumping, hip-firing action of Black Ops 7.
Fast movement helps you navigate the smaller maps of classic modes like Team Deathmatch or Kill Confirmed quickly so you’re always encountering new enemies to fight, keeping the excitement high. Focusing on tactical positioning is still rewarded, thanks to a finely tuned TTK (time to kill) that gives the player who lands the first hit an advantage, but not a guaranteed victory against particularly skilled opponents. New traversal mechanics like a ledge grab that lets you hang off the side of buildings and objects are seamlessly implemented too, opening up new exciting opportunities on every battlefield.
As I noted in my impressions of the Modern Warfare 4 beta, the overhauled ballistic system is far more than a marketing bullet point and genuinely impacts how you engage with weapons by accurately simulating the trajectory of bullets based on the position of your muzzle. In practical terms, it means being able to reliably hit shots when quickly shooting from the hip, which gives you a chance against players that slide around corners with SMGs at breakneck speeds to try and catch you off guard.
(Image credit: Activision)The guns themselves are all fantastic to use, with best-in-class model fidelity, impactful sound effects, and slick animations. There’s a great variety in the arsenal to boot, which spans from modern assault rifles to the antique WWII gear used by the real-world North Korean military. GUNNY, a new automated helper smartly built into the gunsmith system, makes it easier than ever to tweak your attachments for that perfect build. While I will always prefer poring over the detailed stats, giving newcomers the ability to automatically create good attachment setups based on their specific playstyles helps keep the playing field even.
As for the maps, they’re some of the best that we’ve had in recent years. They’re definitely on the smaller side unless you dive into the massive Ground War: Combat Outpost mode (which plays almost like a Battlefield match), though none of them stand out as suffering from poorly balanced spawn points or unfair sightlines. They’re visually stunning. Those taking place in South Korea, such as Silkworm, stand out particularly with their lavishly detailed streets, while little animated intros grant each arena a distinct visual identity.
Wrap all of this up in a slick UI that finally doesn’t look like the Netflix home screen, and it’s hard not to come to the conclusion that Modern Warfare 4 is going to reshape the direction of the long-running series going forward. If I had to truly nitpick, I would fault the lack of faction divisions in the operator lineup – being able to tell at a glance which team a player is on without having to rely on the red enemy indicator would help readability.
For something this insignificant to be my only complaint is a testament to how strong the Call of Duty: Modern Warfare 4 package is
Should I play Call of Duty: Modern Warfare 4?Play it if…You’ve been waiting for a triumphant return
If you’ve skipped the last few Call of Duty titles in order to wait for the franchise’s next big hit, then Modern Warfare 4 is it. There’s never been a better time to dive back in.
You want an unbeatable package
Thanks to a strong single-player mode and excellent core multiplayer experience, Call of Duty: Modern Warfare 4 represents excellence across the board. You even get an entire, engaging extraction shooter thrown in with the included DMZ mode.
You love the Modern Warfare story
Modern Warfare 4 brings the latest Modern Warfare narrative to a satisfying and definitive conclusion that’s well worth experiencing if you’ve played the previous entries.
You prefer the faster pace of Black Ops 7
Modern Warfare 4 is a fast-paced game as far as Call of Duty goes, but engagements are still not as rapid as in Black Ops 7. Stick with last year's instalment if you prefer that style of play.
As with most modern Call of Duty games, there is an expansive selection of accessibility settings. This includes a wide selection of visual presets designed to enhance readability, as well as an assortment of subtitle options for the campaign.
The controls are also highly customizable, with full remapping supported whether you’re using a keyboard and mouse or a controller. You can also tweak aim assist settings and enable presets designed to reduce motor strain.
How I reviewed Call of Duty: Modern Warfare 4I played more than 25 hours of Call of Duty: Modern Warfare 4 for the purpose of this review. This included a full playthrough of the campaign, multiple DMZ sessions both solo and with a friend, and plenty of multiplayer. I also drew on my experience playing more than ten hours of the game’s beta, and some extra hands-on time in a studio visit earlier this year.
I tested everything on PC using a 5070 Ti-powered model by retailer Sca with a compact Corsair 2000d RGB Airflow case, Asus ROG Strix B860-I Gaming Wifi motherboard, Intel Core Ultra 7 265K CPU, a 2TB WD Black SN770 SSD, 32GB of DDR5 Corsair Vengeance RAM, and an Nvidia 5070 Ti manufactured by Asus. This setup lets me play smoothly on custom graphics settings at 1080p with most options set to High.
For peripherals, I used the new Logitech G Pro X2 Rapid keyboard and Logitech G Pro X3 SuperStrike mouse throughout my time with the game.
First reviewed October 2026
Sigma's FP2 is a successor to the world's smallest full-frame mirrorless camera, the FP, and it's even smaller, despite coming with a bunch of handy upgrades.
The FP2 packs a partially stacked 24.5MP full-frame sensor — one we've seen before in the Nikon ZR and Lumix S1 II. And like those cameras, it shoots 6K open gate video, only with Sigma's L-Log color profile, and RAW video through an external SSD.
It comes with 70GB built-in memory, plus a higher capacity battery — the same unit found in recent full-frame Lumix models like the S1 II and Lumix S9 — and it features a 3.15-inch tilt-touchscreen. All decent upgrades.
Autofocus performance has been improved too — the hybrid phase detection system can track more subjects, with what Sigma says is a 15% boost in speed and accuracy.
And these features are packed into a diminutive and sturdy metal body with a delightfully simple design and user experience — I love how the photo and video functions are neatly distinguished. It's an attractive package, and a camera that I thoroughly enjoyed having in my hand.
The tiny FP2 body makes regular lenses, like the 50mm F2 DG Contemporary, above, feel large by comparison (Image credit: Tim Coleman)When considered purely as an upgrade to the original FP, the FP2 is a solid camera. However, Sigma's mission to make the smallest full-frame mirrorless camera comes with compromises, which means the FP2 won't be for everyone. For one, the camera doesn't have in-body image stabilization, whereas the Lumix S9, Lumix S1 II and Nikon ZR do.
There's also no built-in viewfinder, though unlike some rivals, there is an optional EVF and it's a fantastically bright and detailed 5.76m-dot unit that tilts for waist-level shooting.
When shooting photos, I regularly found myself bringing the camera up to my eye, only to remember it didn't have a viewfinder – photo and video creatives will absolutely want to pick up the optional EVF.
That for me is where the FP2 comes undone, somewhat. It's starting price is reasonable, but when you factor in the cost of accessories, the package starts to feel pricey.
There is a miniaturisation premium — Sigma isn't alone in this, however. Overall, there are better value conventional alternatives, but if size and feel matters to you, then the Sigma FP2 is well worth a look.
Sigma FP2: Price and release dateAt first, the Sigma FP2 feels like excellent value — it's a beautifully designed and rugged full-frame camera with impressive specs for $2,199 / £1,899. However, that body-only price is just the beginning for a camera that works best with optional accessories — and for those the cost soon stacks up.
For example, photographers will want the divine EVF-21 5.76m-dot tilt electronic viewfinder, which which adds $500 / £500 to the cost when bought with the camera, and it costs even more when purchased separately. Or how about the camera and lens kit with 50mm F2 DG | Contemporary, which I had for the review and you can see in the pictures, which costs $2749 / £2419.
Other accessories include the Hot Shoe Unit HU-21 (same flash terminal as OM System / Lumix), base plate BPL-21, LCD viewfinder LVF-21 and battery charger BC-91. Sigma is still a decent value brand, but you just need to be aware that this camera system benefits from costly extras, and if you're upgrading that the likes of the EVF are not forwards / backwards compatible with the original Sigma FP.
Sigma FP2 specsSigma FP2 specs:Type:
Mirrorless camera
Mount:
L-mount
Sensor:
24.5MP (effective) partially stacked full-frame CMOS
Autofocus:
Hybrid phase detection AF with subject Tracking AF (Human / Dog + Cat + Bird, with Eye AF)
Continuous shooting:
Up to 20fps (electronic shutter)
Video:
6K up to 60fps, Open Gate, up to 10-bit, L-Log profile
Viewfinder:
N/A, optional 5.76m-dot tilt EVF
Screen:
3.15-inch tilt touchscreen, 2.1m-dots
Storage:
70GB usable internal, single SD/SDHC/SDXC slot
Battery
370 stills / 130 mins video
Dimensions:
112.8 x 69.9 x 41.8 mm / 4.4 x 2.8 x 1.6 in
Weight:
460g / 16.2 oz. (including SD card and battery) or 376g / 13.3 oz without
Sigma FP2: DesignThe FP2 carries the DNA of the original FP, but comes with some welcome design improvements. Crucially, it stays true to Sigma's core mission with this series — make the smallest full-frame mirrorless camera available.
It's designed as a photo and video hybrid, with a chunky switch to choose between the two and a neatly arranged menu for each discipline — the settings remain unique when you move between the two.
There's a chunky exposure dial, and a line of buttons neatly arranged under the screen, including one for color profiles (there are 13 presets, Log and RAW video options).
The 3.15-inch touchscreen is a tilt-type — impressive considering the camera is thinner than the FP, which has a fixed screen. Pulling the screen out reveals vents which presumably keep the camera cool during high-resolution video recording.
Tim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanWe don't get an EVF, which is no surprise given the size of the camera. However, Sigma sells the FP2 in a kit with the EVF-21 electronic viewfinder.
I actually think the modular design makes perfect sense. Shooting video and don't need a viewfinder? You have the tiniest full-frame shooter. Out taking photos and want the display? Add it on.
And I really did enjoy the display — albeit my brief experience with it. It connects to the camera's side through one of the two USB-C ports, and it's a 5.76m-dot tilt type.
Sigma has added internal memory, with 70GB of usable memory, plus there's the SD card slot. I used the internal memory a lot, and had no operational issues — I wish more cameras included internal memory like the FP2 does.
And then there's the battery — the same type as used in recent Lumix cameras, for a healthy shot-life that belies the compact size of the camera. I don't think I've seen such a large battery squeezed into such a small space before — Sigma really has worked wonders to keep the FP2 this small.
Tim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanNaturally, there are compromises for the handling of such a small camera, besides the lack of viewfinder and flash. For one, it's flat-fronted, meaning there's no sculpted hand grip for a secure hold. That's no such problem with small lenses, but the FP2 is so small that even compact primes feel chunky by comparison.
It's true: when stripped back to its basic setup, there is no smaller camera in this class. But to get the most out of the camera, it needs bulking out, all adding to the cost.
What I will say is that the FP2 does modular very well indeed. Its two screw mounts for accessories are handily placed, and they can host the (supplied) loops used to secure the camera's strap, which is a neat bit of design.
The FP2's design isn't for everyone, but after almost two weeks of shooting with the camera, I really did appreciate and enjoy it, and can see how it will appeal to certain users.
Sigma FP2: PerformanceWe've seen the 24.5MP partially stacked sensor before in various Panasonic Lumix and Nikon models, including the Lumix S1 II and Nikon Z6 III. In the Sigma FP2, however, the sensor is not stabilized, which makes handheld video recording much trickier.
I've included a sample reel below, which demonstrates how challenging it can be to record steady video handheld, even with a steady hand. There is a solution, mind you, and that's to record gyro data which can be used to apply stabilization to footage afterwards using specialist software. Alternatively, of course, the camera can be mounted to a gimbal.
I love the photo and video quality I was able to get from the Sigma FP2 and 50mm F2 DG Contemporary lens: 6K open gate video with a choice of 13 color presets make for quick and versatile output, in various aspect ratios for social media (4K vertical video is possible), while the Log profile is a better bet for users who want to edit after the fact.
Photos can be recorded in RAW and JPEG format, and Sigma cameras use the DNG RAW format, which is universally accepted in editing software. For high-speed action, the FP2 can shoot at a rate of up to 20fps, and for sequences up to 180 frames before the buffer slows up — a decent performance.
Sigma says that autofocus performance has been improved by 15% over the FP, with a broader range of subject detection. I found autofocus snappy on people, and it was smooth and subtle enough for video, too, but haven't had the chance to try it out extensively on other subjects, including animals.
There's 70GB of usable built-in memory, which proved reliable during my test. However, it's not possible to record the memory-hungry RAW video using built-in memory or SD card — you'll need an external SSD for that.
Sigma FP2 sample photosTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanTim ColemanSigma FP2: also considerPanasonic Lumix S9
Another tiny full-frame L-mount mirrorless camera with powerful 6K video features and versatile color profiles, available for a fraction of the price of the FP2. I wasn't sold by the camera at launch, but several firmware upgrades later it's arguably the best value full-frame camera for users who shoot a lot of video and it has image stabilization. Like the FP2, there's no viewfinder, but unlike the FP2 there's no option to add one. The FP2's design feels more rugged, and it's modular.
Read our in-depth Panasonic Lumix S9 review
Nikon ZR
Another diminutive, excellent value big hitter for video, the Nikon ZR has the same 24.5MP partially stacked sensor as the FP2 but it's stabilized, a monstrously big and bright 4-inch screen that beats rivals (flip-out, not tilt), and delicious 6K RED RAW color profiles. Like the FP2, the ZR supports 32-bit float audio, and benefits from kitting out with accessories, while it has a decent range of Z-mount lenses to choose from.
Read our in-depth Nikon ZR review
How I tested the Sigma FP2(Image credit: Tim Coleman)Sigma introduced the camera to TechRadar a week or two ahead of its global launch, where I saw the FP2, 50mm F2 DG Contemporary lens and various accessories, including the new 5.76m-dot EVF for the FP2.
I was loaned the camera and lens only for my review, and have made the most of that time, taking the gear with me on a break to Lisbon in Portugal where I used it extensively for portraiture and travel photography.
All my images and videos were shot handheld, with no stabilization for video footage. I tried the various color profiles for video and shot in 6K and 4K.
Category
Score
Comments
Total
84 / 100
Powerful, secure, and with privacy at its heart, there's little not to love about Proton VPN. Read more ▼
Price plans & value
8 / 10
One-plan-fits-all does a great job of balancing value and capability. Though it still sits slightly more expensive than some other top VPNs. Read more ▼
Features
7 / 10
Proton VPN is not as feature heavy as other top VPNs, but what it has, works, and is available on almost every platform too. Read more ▼
Server network
10 / 10
Proton VPN has the more servers than almost any other VPN. It has a huge number of locations, with a good global spread, and high-end server technology. Read more ▼
Read all of Proton VPN's review scores ▼
Privacy
10 / 10
Based in Switzerland, with bags of no-log audits to back its privacy claims, Proton goes above and beyond to ensure its VPN gives no reason to doubt that you're browsing privately. Read more ▼
Security
9 / 10
Proton puts every measure in place to ensure your security is absolute while you're browsing. It doesn't yet have post-quantum encryption but it's more than secure than most VPNs in the present day. Read more ▼
Speed
8 / 10
Proton VPN is among the very fastest VPNs we've tested. It's more than capable of handling any home environment. Read more ▼
Unblocking streams
8 / 10
Despite some hiccups, Proton performed well for the majority of our streaming tests. Read more ▼
P2P & Torrenting
5 / 5
Port forwarding support, P2P optimized servers almost anywhere, and a bunch of guidance for beginners all make Proton VPN perfect for torrenting no matter your experience. Read more ▼
Apps & Compatibility
4 / 5
Proton VPN has apps everywhere, with near-perfect feature-parity between platforms. Plus they look great. But, the web extension does deserve some love sometime soon. Read more ▼
Usability
4 / 5
Easy to look at, explained continuously, and offering intuitive access to everything you need, there are few flaws to Proton's apps. Read more ▼
Accessibility
3 / 5
Despite its wealth of language support, Proton's screen reader is too limiting for those who are visually impaired. Read more ▼
Customer support
4 / 5
Proton VPN has detailed guides on a wealth of topics, and easy access to support agents even if they're not the best we've encountered. Read more ▼
Track record
4 / 5
Proton VPN has a faultless record. While an incident with Proton Mail left some users concerned, years of back-to-back no-logs audits, Swiss privacy assurances, and some major infrastructure investments all make Proton VPN among the most trustworthy VPNs. Read more ▼
Proton VPN price plans1-month
1-year
2-year
Proton VPN
$9.99
$3.99/month
$2.99/month
Proton VPN Unlimited
$12.99
$9.99/month
$7.99/month
Unlike many top VPNs, Proton VPN doesn’t offer tiered pricing. Instead, there is a single paid plan (alongside the Proton VPN Free product). This plan is offered in three lengths: 1-month, 1-year, and 2-year. The price of the plan drops as the length increases. All of these plans do, however, come with a 10-device limit, much like NordVPN.
We always recommend picking up the two-year plan, since it is the cheapest overall. As with all VPNs, you pay the full cost upfront. Just make sure you turn off auto-renewals, so you’re not stung by unwanted price rises. That said, Proton’s price rises are almost non-existent.
Read more about Proton VPN's price plans ▼
Right now, picking up a 2-year plan costs $2.99/month, paid as $71.76 upfront, and renews at $83.88 every 12 months (or $167.76 over two years). By comparison, NordVPN Basic costs $80.73 for the first two years, then auto-renews at $312.93 for the next two years – and that’s including far fewer features than you’d get with Proton.
NordVPN also charges VAT on top of these costs, making the overall price rise even further both on initial sign-up and at renewal. By comparison, Proton’s price is all you pay; tax is included in the advertised cost, barely a renewal increase, little to worry about.
What's more, it's important to remember that Proton Plus is compared here to all of the other entry-level plans of our recommended VPNs. It comes with features that aren't available with other VPNs unless you go up a price tier. So, Proton VPN is, in fact, far better value than it appears.
One option you do have with Proton is to upgrade to its Proton Unlimited plan. This plan gives you Proton VPN, and all its features, but also Proton Mail, Pass, Calendar, and Drive. So, if you want added security for your emails, photo storage, or personal events, you can get it all bundled into one package.
Proton Unlimited costs only a fraction more than NordVPN’s super-premium Prime Plan. That's $191.76 for two years compared to $186.03. What’s more, you’re not stung with the huge price increase you’d face with NordVPN, and you can access a whole suite of products.
What's quite astounding is that a single, on-off month of Proton Unlimited is actually cheaper than a one-month plan from any other of the best VPNs. For only $12.99, you get the full Proton experience, including all its apps and features.
For comparison, 1 month of NordVPN Basic (which gives just the VPN and basic Threat Protection) is the same price, while one month of Surfshark Starter is even more at $15.45.
So, for one month of security, Proton will struggle to be beaten. If you don’t need the additional Drive, Pass, Mail, and Calendar apps, Proton VPN for 1 month is only $9.99 with all features included too, so you’re always going to save compared to even its biggest rivals.
All of this sits Proton VPN somewhere in the middle for value. At regular two-year pricing it's in the same ballpark as NordVPN and ExpressVPN. It's only Surfshark that is significantly cheaper out of our top choices.
Score: 8/10
Features: What can Proton VPN do?Proton’s one-price-gives-all approach means you get the full suite of VPN features straight away. That said, it doesn’t offer a great deal in terms of add-ons.
NetShield is the primary example of this. As Proton VPN’s biggest additional feature, NetShield blocks your device from ads, trackers, malware sites, and phishing sites. It works at a system level, meaning no additional installs for browsers or apps; they’re all automatically protected.
It is highly effective at blocking ads online. However, in our most recent testing we noticed a drop off in performance concerning the blocking of phishing and malware sites.
Testing it across Windows, Android, and iOS, we never saw it impact our battery life, nor did we encounter issues with most apps or websites despite the warnings Proton gives that problems may occur.
NetShield is easy to set up, available on all devices, and super effective at ad blocking (Image credit: Future)Read more about Proton VPN's features ▼
The only sites that struggled were streaming sites. VPN ad-blockers and streaming sites are known enemies, especially when the streaming site is regional and relies on ads to run. We’ll cover this in more depth in the unblocking section later.
Profiles are another key tool in Proton’s arsenal. While some VPNs have functionality to auto-connect on using specific apps or WiFi connections, Profiles goes a step further.
Proton’s solution allows users to create multiple, uniquely tailored settings combinations, 'profiles', for when using the VPN in specific situations. The profiles can be tailored to according to:
It’s also got what Proton calls ‘Connect and Go’, which allows you to pick an app or website that loads automatically when you turn on your profile.
In testing, we set up a ‘US Streaming’ profile. We used WireGuard UDP and turned NetShield off to avoid ad-blocker issues, and auto-loaded Peacock so we could get straight to watching shows. It worked flawlessly every time.
Usefully, the profiles you create also appear on Proton’s mobile widgets if you’ve connected to them recently. That means you don’t even need to enter the app to get streaming if you’re on the go and want to save time.
On desktop, you can also pin any profile you create to the top of your recents list. Similarly, the browser extension now features 'Recent Connections' at the top of its Location List, allowing you to jump back onto your most frequently used servers in a single click.
I really like Proton VPN's profiles. They're easily accessible, work flawlessly, and supremely helpful, top marks!
Proton recently added "Exclude locations" for Android (allowing users to blacklist specific cities from "Quick Connect") and a "Discreet Icon" feature, which lets users hide the VPN app as a decoy (e.g., a calculator) to bypass physical device inspections.
Profiles is super-customizable, easily accessed, and never failed to connect exactly how we wanted it (Image credit: Future)The final unique aspect of Proton VPN’s experience is VPN Accelerator. It supposedly increases performance by up to 400%.
We’ll get into the results of that later, but it works by splitting the processing needed to handle VPN traffic across multiple processors rather than just one.
This reduces the risk of overload to the processor, which would impact performance and result in reduced speeds for a user. It's on automatically for paid Proton VPN users and it’s unavailable for those on the free plan. We recommend leaving it that way to ensure the best speeds.
That's it for Proton's features, and, while it's not a lot, as I say, it functions well, and there are plenty of 'added value' features on other VPNs that don't.
I'd like to see Proton offer a little more with its VPN going forward but, if all you need is a VPN, then you shouldn't have any complaints.
Score: 7/10
Server network and locationsProton VPN offers an even broader global spread with 195 total locations across 149 countries, further expanding its lead for total country coverage.
While the number of locations and countries can be a good indicator of a provider’s spread, it’s never perfect. Often the global spread of these servers can be more telling.
Of all the top-tier VPNs we test, Proton VPN offers the strongest network presence across Africa (33 locations vs. NordVPN's 30) and Asia (51 locations vs. NordVPN's 43). It also maintains well-above-average server distribution across Europe, Oceania, and South America.
Where Proton is most lacking by comparison is in the US, offering 22 US locations compared to the 55 offered by both ExpressVPN and NordVPN. However, 22 locations across the US remains more than sufficient for the vast majority of users
Read more about Proton VPN's server network ▼
It's important to put that in context, though. Proton company mission is to provide private and secure internet access to all, and that's very much reflected in the server spread of its VPN network.
While it might not have as big a concentration in certain areas – mainly North American and Europe Proton makes sure its product is available to as may parts of the globe as possible. That also means it can open up servers and provide free access in times of trouble for local people.
The latest infrastructure expansion adds 7 new server locations across 4 new countries, introducing servers in Bosnia and Herzegovina (Sarajevo), China (Shenzhen), Guinea (Conakry), Kosovo (Pristina), Palestine (Nablus), UAE (Fujairah), and Zimbabwe (Harare). This further reinforces Proton's commitment to delivering secure access in regions with restrictive internet access.
Proton has regularly become a popular choice for people during periods of heightened internet censorship. Recently, Proton recorded an 8,000% increase in sign-ups from people in Uganda during the country's elections and the associated internet shutdown. The company also recorded a spike in interest in Argentina after two popular streaming platforms were blocked.
That's a unique and laudable pillar of Proton VPN identity. It's a great reason to choose Proton if you live in these areas of the world or your likely to travel to them for work. These are also areas where internet restrictions can be toughest, and present a very immediate need for privacy software.
It's also important to realize that Proton has a large number of servers in its network and that makes it good for handling the ebbs and flows of capacity needs.
Proton’s total number of servers currently sits at nearly 20,000 (19,704 at the time of our latest research). This is not only a huge jump from the 5,000 Proton claimed to have back in June 2024, but also puts the VPN provider far in advance of almost any other.
The more servers a provider has in total, the less likely your connection is to be impacted by excessive server load which, in turn, can lead to reduced download speeds and increased latency or jitter. Those are both things to be avoided if you're looking for a gaming VPN or streaming VPN with consistent, high-speed connections the ideal.
Among Proton’s many locations are some virtual locations. Using virtual servers is common among even the top VPNs, but it’s refreshing to see Proton’s level of transparency surrounding the matter.
That said, it’s not perfect. In our testing, it was quickly apparent that the app lacks clear visual indicators for virtual servers. For instance, the Windows app currently doesn't display any icons to let you know a server is Smart Routed.
What’s more, we found a few instances where these virtual locations didn't appear to connect from exactly where Proton VPN’s website said they were hosted.
However, it's worth noting that the vast majority of servers were hosted exactly where Proton claimed they were. The few exceptions we found were generally hosted in neighboring countries, which is unlikely to cause a noticeable performance drop.
It's most likely that Proton's website server lists are just a bit out of date, rather than anything nefarious.
The real diversion from the norm for Proton's server network, though, is that it doesn't use RAM-only servers. Proton believes the security benefits of such servers are minimal and consequently not worthwhile, which they explain in a blog post.
Instead, Proton runs full disk encryption on their servers. This means that even if a server were to be taken away, it would not be possible to access the server certificates that might allow bad actors to create an attack, or attempt to track customers.
Alongside these servers are Proton’s own Secure Core servers. These servers are owned and run by Proton itself, stored in high-security locations, including a former military base and an underground data center, and form the basis of Proton’s multi-hop offering.
Based in Sweden, Switzerland, and Iceland, these servers are deliberately in physically hardened locations with strong privacy laws, reducing the ability of other countries to file legal challenges for data. Plus, the servers are connected to the internet by a dedicated network Proton owns, with IP addresses owned and operated by its own Local Internet Registry.
The average user won’t see a huge difference in performance but any multihop connection does reduce download speeds and increases latency owing to the added VPN server connection. However, those extra measures mean you’re far more protected when using Secure Core than you would with any other VPN multi-hop system. If that doesn't add peace of mind, then we don't know what will.
Overall, then, a great number of locations, backed by strong, secure infrastructure. There's little you need to worry about when it comes to where to connect with Proton VPN.
Score: 10/10
PrivacyProton is as a privacy-first company. Its VPN product is no different – and doesn’t disappoint!
We should first address the fact that it is a Swiss company. Being based in Switzerland means the company is protected by some VPN customer-friendly data privacy laws. Switzerland isn’t part of any intelligence-sharing agreements, and sees such importance in privacy that rarely will a Swiss court grant any data request it receives from another country.
This is furthered by Proton’s full, detailed privacy policy, no-logs policy, and transparency reports when it is subject to legal requests by Swiss authorities. We read through Proton’s privacy policy and were pleased to see a high level of detail, without unnecessary complexities.
The same is true for its no-logs policy. It covers everything we’d expect, including linking out to explainers surrounding the technology Proton has in place to secure your data, such as full-disk encryption and bare-metal servers, both of which we’ll cover later.
The future of Switzerland's reputation as a privacy haven is not certain, however. In recent months, there has been discussions about changes to the country's surveillance legislation. Proton has said it will leave the country if Switzerland no longer offers the privacy protections it feels it requires to operate securely.
Read more about Proton VPN's privacy measures ▼
This no-logs policy has also been audited four times. The last was in August 2025.
These audits have regularly confirmed there is nothing to worry about, even emphasizing the lengths Proton goes to internally to ensure security.
This includes monitoring server configurations and raising alerts if there is an unauthorized change. It also has a change management system which means an employee cannot change any configurations without another employee’s approval.
If that wasn’t enough, Proton’s no logs policy was tested in 2019 when a Swiss court approved a request to hand over customer information. However, since Proton’s no logs policy was watertight and well enforced, there was no information to hand over.
If you’re interested in how many requests Proton receives over a year, you can look over its transparency report. This report is updated whenever a new request is received, even if, as is most common, the request is declined due to Swiss privacy laws.
Proton’s quest for privacy superiority doesn’t just stop with the legalities, though; its Stealth protocol is a staple part of its infrastructure and offers a stellar solution to remaining secure when you need to hide that you’re using a VPN to connect.
Stealth is a protocol based on traditional WireGuard over TCP. By tunneling WireGuard over TCP, having already encapsulated your traffic in TLS, your connection appears as any normal online traffic would.
This is because TCP runs your traffic through the same port that normal HTTPS traffic goes through, port 443. By disguising your traffic in this way, you’re much less likely to be picked up by VPN detection technologies, allowing you greater success when bypassing censorship restrictions, VPN bans, and the like.
All this protective technology does mean that Stealth is by no means the quickest protocol, though that doesn’t mean you’re short of options if you need speed.
Alongside Stealth, you can also pick from WireGuard connection types across all apps, or OpenVPN if you are on Windows, both of which are available in TCP or UDP configurations.
In January 2026, the company announced that it be retiring older manual OpenVPN configurations due to security concerns. Although users of the official app will be unaffected, those running manual setups or on Linux will need to refresh their credentials by February 28 to avoid losing connectivity.
Picking TCP gives a more reliable connection, while UDP is more speed-focused. So, if you’re after a secure, reliable connection, OpenVPN on TCP is the pick, while if you want speed, WireGuard over UDP is ideal, especially with VPN Accelerator enabled.
Proton offers huge amounts of customizability of its protocols (Image credit: Future)We’ve mentioned already how Proton avoids using RAM-only servers in favor of full-disk-encrypted servers instead, but it’s also worth mentioning its commitment to physical locations in regions of high risk.
In ‘unfriendly jurisdictions’, as Proton describes them, Proton uses third-party, physical servers to ensure that it’s not subject to local laws and remains a Swiss company, since the infrastructure is owned by a third-party, and it has full control of the server all the way to the base operating level.
Using physical servers, rather than virtual, ensures the hardware is solely dedicated to Proton VPN, allowing for greater security and control when navigating the difficulties faced in these regions.
In terms of privacy features in-app, there are several that are particularly handy.
We’ve already mentioned Proton’s version of multi-hop, Secure Core. This is a super-secure solution to a two-VPN connection, though the added security does mean it sacrifices country availability. Every connection must go through one of Proton’s Swiss, Icelandic, or Swedish Secure Core bases, and the connection can then only exit in 68 of Proton’s usual 149 countries.
While this may seem like a sacrifice initially, 68 is far more than the 12 multi-hop locations NordVPN offers. Only Surfshark’s Nexus network offers more since it allows a multihop connection between any two Surfshark locations without limitation.
Much like NordVPN, you also get Tor over VPN connectivity should you wish to access .onion sites. Again, Proton comfortably beats NordVPN for locations in this respect, with six to Nord’s two.
As with any Tor over VPN connection, performance does take a hefty hit. Our tests showed a maximum download speed of only 1.89 Mbps, though this is more than double NordVPN’s result, which barely scraped over 700 Kbps.
It’s unlikely that, if using the Tor network, you’re doing anything requiring a huge amount of bandwidth, but beware that you’re never going to get the same speeds you would with a different protocol. If you’re unsure how to safely use Tor over VPN, Proton does offer a handy guide you can access from within the app.
Score: 10/10
SecurityProton does almost all the necessary security steps well. AES-256-GCM and ChaCha20 encryption using Diffie-Hellman key exchanges are standard practices, and Proton only uses protocols that support perfect forward secrecy. This means not only are you secure, but even if a session were to be compromised, none of your older or later sessions are at risk since they’ll use unique encryption keys.
On the topic of encryption keys, Proton uses 4096-bit RSA keys, a step above VPN providers such as Surfshark, which only use 2048-bit, though you won’t notice the difference day-to-day. 2048-bit encryption keys are extremely safe, which is why top VPNs still use them, but 4096-bit keys add additional security through the increase in key length – why the likes of Proton and NordVPN now use these instead.
Proton’s VPN hasn’t yet implemented post-quantum encryption (PQE). However, it is currently working on adding this feature. In October 2025, the company announced it had started working on a new, in-house VPN architecture This will enable the company to introduce PQE in the coming months. The architecture is now being deployed and PQE rollout is imminent.
In an April 2026 update, the company said it was still working on this and currently laying the groundwork for PQE.
That said, its introduction is still lagging behind NordVPN and Express, who already offer PQE. For a closer look, we've also written an in-depth comparison of NordVPN and Proton VPN.
Read more about Proton VPN's security features ▼
Despite lacking PQE, Proton has plenty of features to keep users secure.
Auto-connect is an option right out of the gates. However, it’s not the most flexible system we’ve seen, especially when compared to NordVPN. While you can set your desktop to auto-connect on launch, and mobile apps feature a basic 'Always-on' toggle to re-establish dropped connections, it lacks advanced condition-based triggers.
This lack of any customization is surprising. The likes of NordVPN or Surfshark allow you options such as creating a trusted network list or enabling auto-connect under specific connection circumstances. Without this Proton is a distance behind.
The home screen offers quick access to everything from auto-connect settings to profiles and specialist servers (Image credit: Future)Next comes split tunelling. Proton’s split tunelling is advanced, but until recently Windows users couldn't use the split tunnel with the kill switch enabled. Fortunately, this was resolved in an update in February.
Proton does have several advanced features for split-tunneling. You can choose to split-tunnel both apps and IP addresses on Windows and Android, while Mac users are currently limited strictly to apps. On these supported platforms, you can decide whether your tunnel excludes or includes what’s selected from the VPN connection.
Proton’s app detection on desktop is very good. Any .exe file we had was found and properly thumbnailed on our list – a list which usefully retains any app you add permanently, should you wish to amend your list in future.
On mobile, Proton did a great job finding any app we’d installed (including those installed via Chrome), and could even identify and isolate specific system apps. That said, it did take a few seconds to collate the full list of apps, and didn’t give options for specific Chrome ‘apps’ we’d set up on our Android device to quickly access specific websites.
That won’t impact many but it does mean you’re left split-tunneling Chrome as a whole instead of having specific, unencrypted access to sites where VPNs cause issues, including financial sites.
Proton's settings menu is well laid out and offers superb explanations of even its most complex options (Image credit: Future)Finally, we should mention Proton’s kill switch. On desktop, you get two kill switch options: Standard, and Advanced. Standard works as you’d expect. You turn it on, and your internet connection drops if your connection to Proton VPN is interrupted.
Advanced adds another layer to this. It only allows internet access when connected to Proton VPN, and it remains active even after restarting your device.
Testing the kill switch over Stealth, WireGuard, and OpenVPN, Proton foiled all of our tricks to forcibly drop the VPN. We were disconnected instantly and saw no signs of leaks, and that's exactly what you want.
iOS and Mac users get the equivalent of Windows’ Standard kill switch, which is more than good enough. Android users use the Android-native kill switch, which is essentially the Windows Advanced option. While it would be great to see consistency across the board, none of our testing suggests any reason to worry about Proton’s kill switch no matter the platform.
Diving into Proton’s advanced settings offers several other ways to improve your security too.
That means using non-Proton server network methods to ensure online access to Proton users in crisis situation.
You can also choose to allow LAN connections while still connected to the VPN, set up custom DNS servers, choose your specific NAT type and OpenVPN network driver, and enable IPv6 support and leak protection.
This is extensive customization for any VPN. What’s also great to see is that mobile users get almost all of these functions, losing only IPv6 leak protection and OpenVPN network driver choices from the otherwise extensive list.
The final tool in Proton VPN’s security arsenal is NetShield. This is Proton’s ad, tracker and malware blocking tool. It works at a system level, meaning there’s no need for separate installs for at-risk programs such as your browser. It instead protects all of your apps instantly.
We put NetShield to the test against 36 brand-new malware and phishing sites and attempted to access them. We also ran it through an ad-blocking tester. These are our most recent VPN lab results:
Phishing Sites Blocked
Malware Sites Blocked
Ads blocked
NordVPN (Threat Protection Pro)
92%
80%
21%
Proton VPN
32%
4%
88%
ExpressVPN
84%
16%
87%
Surfshark
48%
28%
44%
Proton’s results raise a number of discussion points. Its 32% phishing sites blocked score is a drop from its previous highs, putting it behind competitors like NordVPN. However, blocking 88% of ads means Proton remains top-tier here, achieving double the successful blocks of Surfshark and four times that of NordVPN's basic blocker.
Its 4% malware sites blocked score is concerning, of course. Though curiously, we also found this with ExpressVPN, which scored just 16% in this round, despite both testing well in the past.
As with speed testing, these ad and site blocker tests are only a snapshot in time, and are relative to the latest threats of that particular day. In other words, it might have just been a bad day at the office for ExpressVPN and Proton VPN.
The takeaway message is that, while Proton VPN currently misses a significant number of malware and phishing threats compared to the top performers, its core ad blocking remains highly effective.
Score: 7/10
SpeedProton has consistently been one of the fastest VPNs that we have tested.
In our most recent round of testing, we broadened our parameters, adding more data points to our testing and increasing our maximum speed capacity to 10 Gbps. This allows for more precise, comparable testing across all VPNs to discern even the smallest differences.
Having previously recorded 1427 Mbps in March 2026, Proton now hits a staggering 1783 Mbps download speed using WireGuard over a short-distance connection.
What’s more, when connecting across transatlantic distances (US to UK) using WireGuard, Proton VPN's download speeds reached 1397 Mbps this time round (up significantly from 939 Mbps in March 2026), solidifying its position among the fastest performers.
Read more about Proton VPN's performance ▼
Both of these results are more than fast enough for any household looking to protect a Netflix binge, gaming session, or just their emails. Proton delivers outstanding local speed performance with 1783 Mbps on WireGuard, placing it ahead of major competitors like NordVPN (1427 Mbps), ExpressVPN(1810 Mbps), and CyberGhost (1480 Mbps).
Over long-distance transatlantic connections (East US to UK), Proton VPN's 1397 Mbps comfortably outpaces key rivals such as NordVPN (939 Mbps), Windscribe (1209 Mbps), and ExpressVPN Lightway Turbo (1184 Mbps), placing it behind only Surfshark (1739 Mbps) and Norton Standard (1730 Mbps).
Additionally, gamers will be pleased to know that Proton recorded very stable jitter in our most recent test.
While for most these figures won't mean much, gamers should take note, since high jitter can contribute to inconsistent online gaming — a trap some competitors fell into this round. Fortunately, Proton VPN's latency recordings were also highly competitive and comparable with the other best VPNs.
The main area we'd like to see improvements is with Proton VPN’s OpenVPN performance. It's better than it was but, at 449 Mbps download speeds over a local connection, it's still trailing behind the likes of NordVPN (688 Mbps), Surfshark (825 Mbps), and ExpressVPN (1038 Mbps).
OpenVPN is commonly considered more secure and stable than WireGuard. If you’re using Proton for security, you’ll likely find yourself using its Stealth Protocol instead, given it's far more security-focused.
In most other circumstances, WireGuard is more than up to the job. However, you'll definitely need to look elsewhere if you want to use OpenVPN on non-Windows platforms, as Proton now completely excludes OpenVPN support from its Mac, Android, and iOS apps.
Score: 9/10
Unblocking streaming servicesProton VPN has a good track record in successfully unblocking streaming service all around the world but it's by no means the best streaming VPN. The accolade goes to NordVPN.
We lab test VPNs for their unblocking capabilities with Netflix libraries in the US, UK, Japan, Australia, and Canada, as well as Amazon Prime Video, Disney+, and YouTube. To check its regional capacity, we also put them against BBC iPlayer, Channel 4, ITV, 7plus, 9Now, 10Play, and TVNZ+.
Proton handled every Netflix library with ease, just the same as all of our top VPN choices. However, it did hit a few snags this time around, failing with several Amazon Prime Video libraries and requiring a bit of initial trial and error on other major sites.
On the plus side, it comfortably dealt with the likes of iPlayer, 7plus, 9Now, 10Play, and even TVNZ+ (which it had failed to unblock in previous testing cycles). But server-side issues did crop up elsewhere.
Read more about Proton VPN's unblocking capabilities ▼
Trying to access Disney+ UK and ITV saw us blocked when trying to connect from Proton’s London servers; luckily, though, switching over to a Belfast server saw these issues quickly dissipate.
Similarly, un-signed-in US YouTube wouldn’t work via New York servers, but connecting to Colorado was a quick fix. This is still a great win for Proton, though it's worth noting that top rivals like NordVPN and ExpressVPN also successfully unlocked US YouTube from abroad this time around.
It was the local ad-funded streaming services where Proton VPN required a little extra troubleshooting. Beyond just switching server locations, we've found that services like Channel 4 in the UK can struggle unless you temporarily turn off the NetShield ad-blocker.
Fortunately, there are no special "streaming servers" you have to hunt down; you should theoretically be able to stream content from any server in any country. When faced with a block, as happened with Disney+ or YouTube in our tests, we were simply able to click a different city or server in the same country and try again.
A streaming-friendly network allows a greater spread of server load, reduces performance impact, and even allows you to pick servers with better latency to ensure a high-quality experience. So, while we can't claim that Proton is the absolute tip-top for streaming, it's certainly up there with most of the premium contenders.
Score: 7/10
P2P and torrentingProton VPN is arguably the best VPN for torrenting out there right now.
P2P is fully optimized and supported across its entire network of 149 countries for paid users. You can filter into the P2P-optimized servers at the click of a button. I downloaded several test torrents, and had no issues at any point in the process.
Proton VPN supports port forwarding which helps to get the best torrenting speeds. Many major VPNs lack this support owing to the known security risks it brings. That's understandable to a degree, but not only does Proton VPN have features to help people using P2P networks, it's also one of the few VPNs to have a wealth of information in its user base on how to actually do it with guides such as how to torrent safely with a VPN.
You can port forward across Proton VPN’s Windows, Linux, and Mac apps – the last of which was finally added in summer 2025.
If you’re confused or need guidance, Proton has more in-depth posts outlining the risks of port forwarding, how to set it up on its apps, how to manually set it up, and even how to manually set it up on the likes of qBittorrent and uTorrent.
This level of guidance is something we’d rarely expect, let alone the level of support on its apps.
If you want to use a VPN for torrenting, then given all this, and Proton's speeds and server network spread, then you really have to have it on your P2P shortlist.
Score: 5/5
CompatibilityProton VPN does a remarkable job of not only offering a strong spread of apps, but also ensuring there aren’t huge gaps in features from one app to another.
You can use Proton VPN on Windows, Mac, iOS, and Android as expected – plus it has a GUI client for Linux users. Android smart TVs also get an app, as well as Fire TV Sticks and Apple TV boxes.
The Proton VPN browser extension is available on Chrome or Firefox. As with ExpressVPN, PIA, and CyberGhost, you need to download the Chrome Web Store extension onto Edge to get Proton VPN on Microsoft's browser.
Proton VPN is also router-compatible and has a handy, detailed guide that explains what methods you can use to set this up.
In terms of parity across platforms, Proton VPN is near-perfect nowadays, unlike VPN providers such as NordVPN.
The anomalies for Proton to speak of are that its mobile apps lack advanced condition-based auto-connect rules (relying instead on a basic "Always-on" reconnect function), and non-Windows users completely lose native OpenVPN support. This makes Windows the exclusive home for OpenVPN on official desktop/mobile apps.
However, Apple users get plenty of platform-specific quality-of-life additions. In April 2026, Proton added support for Siri Shortcuts to its iOS apps, allowing users to trigger 'Connect' and 'Disconnect' actions using custom voice commands or automated Apple Workflows.
Proton has pulled native OpenVPN support from mobile and Apple apps to favor faster, more secure modern protocols like WireGuard and Stealth. Interestingly, while iOS lost IKEv2 support alongside OpenVPN, macOS actually still retains native IKEv2 support within its app settings. Should you wish to use OpenVPN on Mac, Android, or iOS, Proton does, however, offer in-depth guides to manually configuring those connections.
Prior to summer 2025, Proton users on Mac were also short of both port forwarding and split tunneling capabilities. These features have since both been introduced—though it's worth noting that split tunneling on macOS is currently labeled as an "experimental" feature, giving Mac users slightly less parity than Windows.
Score: 4/5
UsabilityAfter signing up for Proton VPN, you have two main ways to get your app downloaded.
First off, if you click the ‘Download’ tab at the top of your screen, you’re quickly presented with every app Proton has, including its extensions, mobile apps, and Smart TV apps – though I highly doubt you’ll be downloading Proton to your Smart TV via the website! If you’re on a smaller screen, the download tab is hidden in the hamburger (three-line) menu in the top right corner.
Alternatively, from the website, if you go into your Proton account (found in the top-right corner of your screen), you can access some more specific application types.
The Proton VPN website is a simple access point to downloading all of its apps and web extensions (Image credit: Future)Read more about Proton VPN's usability ▼
In the downloads section, you can quickly access APK, GitHub, and F-Droid versions of its Android, Android TV, and Chromebook apps. You’ll also find here your configuration settings to manually set up OpenVPN or WireGuard on Android, iOS, Windows, Mac, Linux, or a router.
Once you click the download button, you’re on your own, in the app, at least. The download client gives you the option to install Proton Drive, Proton Mail, and Proton Pass, alongside the VPN, and then, once Proton VPN is loaded, you log in, click ‘Get Started’, and go.
User ExperienceOnce you’re in, Proton’s hues of reddish purple and black could leave a beginner wondering quite how complex an experience they’re in for; luckily, all of Proton’s apps are simple.
This visual identity is consistent across all of Proton’s platforms, as is the simplicity. The key differentiator between Proton VPN on desktop and Proton VPN across other platforms is the map aspect of its interface. On Windows and Mac, the map can be used to identify and connect to a server.
On mobile, this map isn’t navigable, though it shows the country you're connected to from the list. On smart TVs, there isn't a map at all.
In reality, I rarely find myself using the map as a connection location tool with any VPN I use. A search field and list proves quicker in my experience.
No matter the platform you’re on, you’re directed towards everything you’d need straight away.
Smart TVs understandably have the fewest quick action options, but everything other than server location is found under settings, so you’re not left trawling a bunch of submenus using a TV remote – even though Android TVs have to go to the bottom of the locations menu to find the settings panel.
Finding the server you’re after couldn’t be simpler, either. The app doesn’t hide its Tor, Secure Core, or P2P servers entirely. Instead, it offers dedicated tabs across desktop and mobile, and shows each country’s server types in their server lists on Smart TVs. You can even search by individual server code if you know the one you want.
One area Proton previously struggled with was its browser extension, but it has bounced back significantly. While it used to suffer from poor user reviews, it has climbed to a solid 4.0 rating on the Chrome Web Store, matching rivals like Surfshark.
It still offers less customization than the main apps, allowing access only to standard or Secure Core servers, and its settings menu remains primarily focused on data sharing rather than technical features. However, it's a much cleaner experience than it used to be — further improved by the addition of a 'Recent Connections' section pinned to the top of the Location List, making server reconnections much faster.
I’d also like to see Proton make more efficient use of space in its desktop apps. The Proton map interface takes up an extraordinary amount of space for fairly limited use – one reason why NordVPN completely overhauled its desktop dashboard layout in early 2026 to favor a search bar instead.
Meanwhile, key features such as protocol selection and auto-connect aren’t front and center where they could be.
Proton VPN's mobile and smart TV apps do a much better job of managing space. They prioritize quick access to server locations and connection types, with the map present only once connected.
Mobile management is further enhanced on iPhone and iPad thanks to its recent support for Siri Shortcuts, enabling hands-free 'Connect' and 'Disconnect' actions directly via voice commands or the Apple Shortcuts app.
Quibbles aside, I'm really impressed with the Proton VPN apps. Using features is simple thanks to high-quality explainers under each option, plus links out to some key guides when the setting is more advanced, such as port forwarding.
You can also tell what features are active by whether they’re greyed out or in full color, and on desktop platforms, you’re given a bunch of keyboard shortcuts to make accessing sections of the app quicker than it already is.
The main anomalies across platforms are that mobile apps only offer standard "Always-on" auto-reconnection rather than advanced condition-based rules, and native OpenVPN support is completely missing from Mac, iOS, and Android apps — making Windows the exclusive home for the protocol inside Proton's native software.
You also get full customization of your security options, should you wish, but equally, beginners won't feel pushed into making changes they're not ready for, and they won't get bombarded with complex terms.
Of course, the most prominent feature of any VPN app should be the big Connect button, and that's nice and clear with Proton. There's no fuss, no confusion, just simple security on every platform.
Score: 4/5
AccessibilityPutting ProtonVPN.com through accessibilitychecker.org’s accessibility scan gave us some interesting insights.
Proton VPN’s accessibility audit scored 53% overall, closing the gap on the likes of NordVPN (65%) and Mullvad (95%), while pushing well ahead of providers such as Surfshark (23%). PureVPN remains tied with Proton's historical baseline at 35%.
Diving into the report, the site's issues primarily surround screen reader testing. The automated auditing highlights that multiple page structure and coding problems remain, which greatly reduce its overall screen reader compatibility.
In relation to the industry as a whole, however, Proton’s new 53% score is quite respectable, placing it a mid-range 6th place out of 14 major tested providers. Accessibility is clearly an area that still needs greater focus across the entire industry.
Outside of web-based metrics, Proton VPN's actual application does a great job of accommodating people's physical needs.
Ditching our mouse still meant we rarely struggled using the desktop app with the keyboard alone. On a few instances, we were jumped to unintended areas of the app, and sometimes our selection rectangle just disappeared entirely, but never often enough to stop us from connecting successfully. We also never struggled to search servers specifically, nor did adjusting settings prove difficult.
From our experiences, you’ll likely only find a better keyboard experience using either PIA or ExpressVPN. ExpressVPN has long focused on simplicity in its apps, so success in this regard is no surprise. Proton VPN did a better job in this regard than NordVPN, though.
Proton also completely knocks other premium VPNs out of the water when it comes to localized language support. It natively offers 36 languages across its clients. That makes Proton VPN’s language total significantly larger than major competitors like NordVPN and Surfshark.
So, while Proton could still do better in terms of visual screen-reader compliance, it remains highly accessible in almost every other practical metric.
Score: 3/5
Customer supportAccessing support for Proton VPN is simple. First off, you can use its FAQs, guides, and resources hub to access guides on almost any topic.
Testing the depth of its guides using ‘DNS’ as a search, it was great to see guides on everything from DNS leaks, to flushing DNS caches, and how you can use custom DNS.
It even filed in instances where DNS was a related topic and highlighted the relevant text. For example, it pulled in Proton’s streaming troubleshooter guide since DNS over HTTPS can contribute.
These guides are easily accessible, too. Whether it’s via a couple of clicks in the Windows app or two taps on mobile, you can quickly enter the Proton Support Center, report issues with your service, or access debug logs to help support assistants troubleshoot your problem.
If you are a paid user on the VPN Plus or Unlimited plans, you also get access to priority support and a dedicated live chat feature to bypass the ticket queue entirely. Keep in mind that if you are using the completely free version, live chat is locked away and you'll be reliant solely on the help documents and email ticketing.
Alternatively, if you run into a unique technical glitch, Proton has one of the absolute busiest Reddit communities in the entire VPN space. With roughly 600+ weekly contributions, the r/ProtonVPN subreddit is a thriving hub for user-to-user troubleshooting that regularly beats out rivals like NordVPN or ExpressVPN for active community help.
The Proton support hub offers reams of depth, with explainers, how-to's and troubleshooting guides for even complex issues. (Image credit: Future)Read more about Proton VPN's customer support ▼
Next, we tested the skills of Proton’s support agents. We raised the question, “What do we do if we can’t access .onion websites while connected to Tor over VPN?” and got a reply via ticket in around five minutes!
What was more impressive was that our response wasn’t just an automated acknowledgment — we got some sensible suggestions right off the bat around testing different servers, switching browsers, and disabling NetShield. We were also asked for more details to help pinpoint the issue.
At this stage, though, the standard slipped a bit. Our agent became bogged down in browser troubleshooting, and response times jumped from five minutes to around three hours. What we received at the end of that wait felt a bit underwhelming for the amount of information we’d provided.
To be fair to the agent, browser and platform quirks are common culprit areas for Proton's Tor integration. For instance, desktop Firefox requires a manual configuration tweak to resolve onion URLs, Firefox for Android won't open them at all, and Apple users must have their app Kill Switch turned on just to get Tor traffic to pass cleanly.
Even so, the handling could have been smoother. By comparison, we’ve put the same question to NordVPN in the past, and, while the initial response was slower, we received a much more cohesive set of diagnostic questions and an all-around more reassuring experience.
Proton’s lightning-fast initial response does deserve credit, though. Plus, our broader experiences with their team over our months of testing have generally been highly reliable more often than not.
Score: 4/5
User reviewsWhile not perfect by any means, review sites often prove a good initial gauge of how trustworthy a VPN is, how well it performs, and what issues it’s had in the past.
Proton VPN’s mobile apps are among the best on the market. Its stellar ratings of 4.7 on the Google Play Store and 4.6 on the Apple App Store are a fair reflection of its capabilities and put the VPN provider very much on par with our other top recommended services.
Google Play
App Store
Trustpilot
NordVPN
4.6
4.7
4.2
Windscribe
4.6
4.6
4.7
Surfshark
4.6
4.7
4.3
Proton VPN
4.7
4.6
2.2
ExpressVPN
4.7
4.7
4.1
On the desktop side, its Chrome Extension has undergone a major redemption arc. While it historically lagged behind with a mediocre user rating due to early performance bugs, a series of major software overhauls has seen its score climb to a highly respectable 4.1/5 on the Chrome Web Store.
It’s a massive improvement that brings it right back into the conversation with competing browser extensions.
Proton’s Trustpilot reviews offer further food for thought, since scoring a 2.2 out of 5 is still quite low compared to its app store success. There isn’t a single trending theme driving the negative reviews either—unlike, for example, NordVPN’s frequently targeted auto-renewal policy.
It's also worth noting that Proton has a comparatively tiny footprint here with just 901 reviews in total, while the likes of ExpressVPN and Surfshark have accumulated over 25,000.
It is somewhat strange that these complaints aren't widely reflected in the highly positive mobile app store reviews. Ultimately, while a chunk of 1-star Trustpilot reviews shouldn't be ignored completely, the actual day-to-day performance of the product and our rigorous long-term lab testing simply do not tally with those specific negative metrics.
Track record: can you trust Proton VPN?Proton has a strong track record of proving its commitment to privacy. Since 2022, the VPN provider has undergone yearly no-logs audits. The latest was published by independent auditors in September 2025, but its history of transparency goes back long before this.
What’s more, all of Proton VPN’s apps are open source. This means that anyone can look at, and judge, the code found in each app. By going open source, anyone can check and confirm that Proton’s apps work properly and do everything they’re supposed to safely – providing peace of mind that there isn't anything malicious happening behind the scenes.
The company also helps fund external projects that work to protect people's privacy and in January 2026, it donated over $1.27 million to a variety of digital rights groups. Organizations included Transparency International, Witness, EDRi and Lighthouse Reports.
Despite this, there are a handful of high-profile legal incidents involving its sister product, Proton Mail, that continue to concern some privacy advocates.
In September 2021, Proton was compelled to log and hand over the IP address of a French climate activist. Later, in May 2024, Proton complied with a request to hand over the optional recovery email address of a Catalan independence activist, which authorities then used to identify them via Apple.
Most recently, in March 2026, Proton was forced to share credit card payment data with the FBI regarding an activist in Atlanta.
Read more about Proton VPN's track record ▼
What many critics fail to realize is that Proton did not directly cooperate with foreign governments in any of these cases. Foreign law enforcement agencies had to apply through international legal channels to Swiss courts.
Because Proton is a Swiss company, it cannot ignore a legally binding Swiss court order. Crucially, in none of these cases was Proton's end-to-end encryption broken — no email content, message text, or core data has ever been compromised. The users were ultimately exposed due to peripheral metadata they chose to provide, such as personal credit cards or personal recovery emails.
It also must be remembered that these cases strictly surround Proton Mail, not Proton VPN, and these products are handled entirely differently under Swiss law.
Proton’s privacy policy does a good job explaining this, explicitly noting that Swiss regulations do not force VPN providers to log data, whereas email services can be required to disclose IP logs or account metadata in the event of a Swiss criminal investigation.
The other sensible move for people using Proton Mail is not to register a recovery email address in the first place, although that comes with the obvious risk of losing access to your account.
While it's understandable why these legal disclosures shook the trust of some users who mistook privacy for total anonymity, they do not warrant concern about the VPN itself. To Proton’s credit, it goes to great lengths to remain transparent about its legal obligations, and its core zero-knowledge encryption architecture remains entirely intact.
Score: 4/5
Final verdict(Image credit: Future / Gemini)Proton VPN is, without doubt, a top VPN. It offers a huge array of locations, superb speeds, and rock-solid security. It's surprisingly good value too, when you compare it to the equivalently-featured tiers of other VPNs.
Proton VPN's track record and high levels of privacy are what it should be most proud of, though. Of all the VPNs we recommend, it's the one we'd bet our lives on if we really had to.
It’s also a highly customizable VPN with stunning apps. Its whole ecosystem of Big Tech alternative software is well worth using if you like them.
Who should use Proton VPN?✅ Torrenters: Proton’s breadth of P2P support, and, more importantly, port forwarding support, make it perfect for torrenting. Plus, it offers a wealth of knowledge guides to help you stay safe and effective.
✅ Those wanting to move away from Google: Picking up a Proton Unlimited plan opens the door to more than just Proton VPN, you can use its secure storage, email.
Right now, you can get Proton VPN for only $2.99/month on a 2-year deal. It’s got sleek, customizable apps, servers in 149 countries, and doesn’t struggle to unblock your favorite streaming services thanks to its full streaming optimization and high download speeds.
What’s more, unlike many top VPNs, it has port forwarding support, and guides to equip you to use this and all of its other tools to the maximum. Try risk-free with Proton’s 30-day money-back guarantee. View Deal
Who should try a different VPN instead?❌ Streamers: While Proton VPN can definitely unblock streaming services, it struggles more than some may like. You can likely find stronger streaming performance for a similar or cheaper price if this is a priority.
Also considerNordVPN – The best VPN overall ($3.39 $2.99)
While Proton VPN offers much to please privacy purists, our tests have found no better VPN than NordVPN right now. Like Proton, NordVPN has a 10-device limit, but it offers faster speeds, improved streaming performance, and unique tools such as Threat Protection Pro and Meshnet. You can try NordVPN risk-free with its 30-day money-back guarantee. View Deal
Proton VPN is based in Switzerland. This is because the country has strong privacy laws, and isn’t part of any intelligence-sharing agreements. This means it’s highly unlikely that any request from a country to access Proton’s data will be approved.
Does Proton VPN support port forwarding?Yes. Unlike many of the top VPNs, Proton VPN offers full port forwarding capabilities. While the provider is aware of the risks, it offers in-depth guides to explain what those risks are and how to go about port forwarding safely.
Is Proton VPN blocked by Netflix?No, our testing showed that Proton VPN has no issues accessing Netflix. We tested the provider with Netflix’s UK, US, Canadian, Australian, and Japanese libraries and saw no issues throughout.
Proton VPN testing methodologyAlongside the features that I've tested on my own devices, I'll also refer to what "we" have tested in this review. When I talk about "we", I'm referring to anything found during our lab testing. This testing is conducted by VPN Technical Editor, Mike Williams. Mike has been lab testing VPNs for over 11 years.
Each VPN is tested every six months. We measure speed, ad-blocking, anti-phishing and malware, streaming service unblocking, local IP address leaks, and more. Each server network is spot-checked to confirm that the VPN server locations are accurate. We also confirm a provider's security credentials, privacy policy, and executable files are secure and safe.
To find the full details of our VPN review processes, you can take a look at our VPN testing methodology.
This review has been fact-checked by the TechRadar VPN team, as well as with information provided by Proton. We update this review regularly to include any new features or information about the product. That means that this review is always up to date and as you would find the product if you downloaded and used it today.
If you notice anything in your experience of using Proton VPN that doesn't match what you read on this page, please let us know in the comments or by emailing us.
We will then do our best to offer product support information or include corrections and warnings to other users, depending on which is appropriate.
Razer has a long and storied history when it comes to its own mechanical keyboards, but at virtually every opportunity, it has charged a bit of a premium for them. Even the more enthusiast-focused ones, such as the BlackWidow V4 75%, have tended to transplant the brand's gaming look onto a hot-swappable, sound-dampened board with a premium price to match. The Reclusa X Mini 65% takes a different approach. At $49.99/£59.99/AU$99.95, it's aimed squarely at the budget end of the market, and at people who might be buying their first mechanical keyboard, which is a good market to go after.
The problem a first-time buyer has is simply the breadth of choice on offer, and it can be very daunting to pick a keyboard, even if I think it's simpler than the internet wants you to think. Likewise, a lot of the choices on offer tend to skimp on certain things, or they aren't offering a complete package – Razer has hit the nail on the head when it comes to the fundamentals of a good affordable mechanical keyboard.
For instance, the plastic chassis is compact but has a surprising amount of heft, and I couldn't find any real deck flex. For the money, that's a pleasant surprise. Moreover, the third-gen Orange tactile switches are the best Razer has made in a while, with a pleasant feel under finger that kept me using this keyboard long after the review period was up, and the mint green colorway is a departure from the brand's usually quite aggressive, gamer-centric styling.
(Image credit: Future)It's only really the little things that let it down. I'll continue to bemoan the presence of ABS keycaps, even on a more affordable keyboard, and the lack of any form of adjustable feet on the underside feels like an oversight. The absence of any wireless connectivity may not please some, but I don't necessarily see it as a big issue given the price.
Even so, the Reclusa X Mini 65% is a very easy keyboard to like. It's sturdy, smooth to type on, and looks the part, and it has room to grow if you want to experiment with different switches, being hot-swappable and all. It's a fantastic first mechanical keyboard for a lot of folks, and all the more fun being from a brand I might not have expected to get it so right.
Razer Reclusa X Mini 65% review: DesignAs much as the Reclusa X Mini 65% isn't an expensive keyboard, it doesn't exactly feel like a bargain-bin product, either. Far too often, cheaper keyboards from brands up and down the reputational ladder are plastic fantastic, with corners that flex and a chassis that feels like it'll give up as soon as you put your fingers down to type.
Not so with this product. The plastic chassis may be compact, but it has a surprising amount of heft and no real deck flex, which I'm delighted about. I first got hands-on with this product at Gamescom 2026, and the first thing I did was pick it up, try to flex the chassis, and was met with resistance from the keyboard's frame, which genuinely surprised me. That doesn't happen too often these days.
The style Razer has opted for with this keyboard is also unlike any of its previous efforts. The brand's other keyboards, even the more enthusiast-focused ones such as the BlackWidow V4 75%, simply transplanted the signature look of its gaming products and supplemented it with hot-swappable switches, sound dampening, and so on. The Reclusa X Mini 65% actually looks a little more like a product that someone getting into mechanical keyboards might want to purchase.
(Image credit: Future)I'm a particular fan of the keycap styling and color options with the mint green accents for Esc, Return, the Space Bar, and arrow keys, plus white for other function keys. The main alphanumerics are black with the same green hue for the legends. Being doubleshot is nice for durability, too, although I will continue to nag Razer about its use of the shiny ABS plastics. Even at the more affordable end of the market, we're seeing the more durable (and much more shine-resistant) PBT used more often, so it would have been nice to see it here.
The 65% layout is largely okay to use day-to-day, and provides you with some of the functionality of bigger footprint keyboards, such as a single column nav cluster and arrow keys in the corner. Other functions, such as the F-row, media playback and controlling the keyboard's RGB backlighting, are relegated to a function layer. I'd prefer a bigger layout, but 65% is the absolute smallest I can get away with using day-to-day without feeling hemmed in.
(Image credit: Future)The interface around the back is nice and simple, with just a USB-C port for hooking the keyboard up to a PC or Mac. After all, it is just wired, with no other connectivity options available – for the price, it's perfectly fine.
I do have another bone to pick, though. The underside has no adjustable feet. While the default rake of the Reclusa X Mini 65% is comfortable enough for me, it's a shame that you can't tilt it any further up.
One of my bigger keyboard-related axes to grind has often been Razer's own switches. The older Green and Yellow switches never did anything for me compared to other options out there, and the third-gen Orange soft tactiles that's been fitted to my sample of the Reclusa X Mini 65% have been Razer's pick of the bunch for some time.
These are 50g switches, providing a slightly heavier press than your typical crop of linears, with a little more weight under finger than I usually like. There's a decent tactile bump halfway down the keypress to boot. For typing an array of articles with this keyboard, this review included, it's been nothing if not agreeable.
(Image credit: Future)The switches also come pre-lubricated, meaning they’ve had a small dab of lubricant on the stem, switch housing, and elsewhere inside for a smoother keystroke. The idea of lubricating switches has become more tied to the modern mechanical keyboard hobby in the main, and it works to the Oranges’ advantage by offering a smooth keystroke that’s nicely interrupted by the soft tactile bump halfway down the keystroke.
If these switches aren't your jam, though, then the Reclusa X Mini 65% is hot-swappable and compatible with your usual MX-style three- or five-pin switches, and it works the way you'd expect, with no soldering or funny business required. That said, I couldn't spot a keycap or switch puller in the box, so you'll need to supply your own if you want to swap them out. Doing so is easy enough, though, so you can change switches in a matter of minutes, potentially changing the feel of the keyboard completely. For instance, I had some Cherry MX Northern Lights knocking around, which are a lighter and much quieter linear switch, which changed the feel of the 'board completely.
Regarding noise, this Razer keyboard isn't the quietest, and when you get up to speed, it can be quite loud. That said, there is internal dampening to help reduce any case rattle and ping, and the acoustics on offer here are largely pleasant, with a crisp and quite bright sound when you get into the groove.
(Image credit: Future)Software duties are handled by Razer's Synapse 4 suite, which is a major improvement on the older and clunkier forms of Synapse that came before it. As expected for a keyboard that isn't packed to the rafters with HE or TMR or whatever else, the customisation here is largely limited to key remapping on two layers, plus enabling the brand's Snap Tap feature for unusually brisk side-to-side movement in the likes of CS:2 and configuring the keyboard's RGB lighting.
The Reclusa X Mini 65%'s solid keycaps mean the Chroma lighting this keyboard has is more of an underglow than a full-blown Pink Floyd gig, although it's still plenty bright enough and works well with the aesthetic of the keyboard.
Razer launched the Reclusa X Mini 65% in September 2026. At $49.99 / £59.99 / AU$99.95, it's easily one of the most affordable keyboards the brand has ever released, let alone an enthusiast-focused one.
That price puts it firmly in entry-level territory. It's much cheaper than the Razer BlackWidow V4 75%, which sits in the more enthusiast-focused part of Razer's range, and it takes on the likes of the MechLands Vibe99, another budget board that trades a premium finish for strong value. It also sits alongside Gamakay's TK75 V2, which proved you don't need to spend big to get a satisfying typing feel.
(Image credit: Future)What sets the Reclusa X Mini 65% apart from a lot of these more affordable mechanical boards is how much it gets right for the money. The solid chassis, hot-swappable switches and doubleshot keycaps are rarely found together at this price, and when they are found together, it can usually mean a compromise on feel, one way or another. The compromises are a wired-only connection, 1,000Hz polling and shiny ABS keycaps, but for most buyers on a budget they're easy to forgive.
Layout
65%
Switches
Razer Gen 3 Orange Tactile
Programmable keys
Yes
Dimensions
12.2 x 4.02 x 1.5 inches / 311 x 102 x 37mm (LxWxH)
RGB or backlighting
Yes - RGB (customisable)
Should I buy the Razer Reclusa X Mini 65%?Razer Reclusa X Mini 65% ScorecardAttribute
Notes
Score
Design
The Reclusa X Mini 65% looks great with its two-tone green keycaps, plus has a surprisingly solid plastic chassis. It's little things that let it down, such as ABS keycaps and the absence of any feet on the underside.
4.5/5
Performance
The tactile Orange switches inside are surprisingly good for a mainstream brand and comfortable for extended periods and feel smooth with a pleasant tactile bump. Software config is competent too, as is physical customisation with hot-swappable switches.
4.5/5
Value
The Reclusa X Mini 65% is one of the brand's most affordable keyboards ever, and it hits the spot for price-to-performance with excellent value for money.
4.5/5
Average Rating
The Razer Reclusa X Mini 65% impresses for a big brand's budget keyboard, proving a proper mechanical 'board for a song can be done when you put your mind to it. It looks good and feels excellent with tactile switches and a surprisingly sturdy plastic chassis. If I'm being nitpicky, the lack of any adjustable feet and more basic software customisation are sore misses, but on the whole, this is a highly impressive mechanical board.
4.5/5
Buy it if…You want a sturdy keyboard on a budget
The Reclusa X Mini 65% has a surprising amount of heft for the money, with no noticeable deck flex. That makes it feel a good deal more expensive than it actually is. View Deal
You want a satisfying tactile switch under finger
Razer's Gen 3 Orange switches are the best it has made in a while. The pre-lubed 50g stems and soft tactile bump make for a smooth, agreeable typing feel, and they're a pleasure for long writing sessions. View Deal
You want a satisfying tactile switch under finger
Razer's Gen 3 Orange switches are the best it has made in a while. The pre-lubed 50g stems and soft tactile bump make for a smooth, agreeable typing feel, and they're a pleasure for long writing sessions. View Deal
You want wireless connectivity
This is a USB-C wired board and nothing else. That's perfectly fine for the money, but if you want Bluetooth or a 2.4GHz receiver, you'll need to look at other options.View Deal
You want flip-out feet
It might seem a small nitpick, but the lack of any flip-out feet on the underside of this keyboard can be a shame if you want to get properly comfortable with this board, hindering its ergonomics a bit.View Deal
You want deep software customization
Synapse 4 is a big improvement on older versions, but you're limited to key remapping on two layers: Snap Tap and RGB control. If you want more tuning options, you'll need to look elsewhere.View Deal
MechLands Vibe99
The MechLands Vibe99 goes after the same budget-minded buyer, and it's a solid performer, with well-lubed linear switches and a snappy response. It's a less handsome package than the Razer, though: the chassis feels solid but not premium, the retro styling doesn't charm, and the software isn't as good as it should be. It also uses a near-full-size 1800 layout rather than a 65% one, which suits you better if you want more keys.
Read our full MechLands Vibe99 reviewView Deal
Gamakay TK75 V2
If you'd rather have a 75% layout, the Gamakay TK75 V2 is a lovely alternative, with damped switches that are great for typing and gaming and near-silent in use. That's a big contrast with the Razer, which can get loud once you pick up speed. The catch is that it lacks gaming-specific tweaks, so it suits typists better than players who want the likes of Snap Tap.
Read our full Gamakay TK75 V2 reviewView Deal
How I tested the Razer Reclusa X Mini 65%I tested the Reclusa X Mini 65% for around two weeks, using it as my main keyboard for work and play during this time with both Windows and macOS.
I used it for typing up thousands of words a day with my PC and hooked it up to my MacBook Pro over Bluetooth as my primary keyboard for work, too, to judge its performance. I also used the Razer Synapse 4 software on Windows to remap keys, program the macros and see what else it had to offer.
I've been a tech journalist for the best part of a decade, and have reviewed plenty of keyboards in that time from brands big and small. I'm also a mechanical keyboard enthusiast, so I have a keen eye for peripherals and have been involved with the hobby before it hit the mainstream.
B12 is a powerful AI platform with a focus on speed and support, blending the power of artificial intelligence with a human touch to help professional service providers create polished websites. Founded in 2015, the company's mission is to be one of the best AI website builders, alongside being an all-in-one platform that enables professionals and businesses to attract, win, and serve clients online.
Unlike standard self-serve builders, B12 combines automated generative AI layout creation with human design and copywriting assistance. Beyond website creation, it functions as a centralized operations hub featuring built-in scheduling, client intake, invoicing, eSign, and email marketing.
We were impressed by the quality of the AI-generated website drafts and how B12 equips you with an array of tools to engage visitors and run your business. I found B12 ideal for professional service providers—such as consultants, accountants, lawyers, coaches, and local service agencies—who need a polished web presence paired with back-office client management tools, but don't have the time to build or write a site from scratch.
On the downside, B12 comes off as a bit more expensive than some of the best website builders. While comprehensive, the sheer number of features could overwhelm some users. The platform is also geared towards service-based small businesses, so it may not be the best fit for every type of website. For example, the support for dedicated ecommerce platform like Shopify isn't as deep or as natively integrated as rival website builders.
Overall, I found B12 to be a compelling option for service providers and small businesses that want a full-featured website without spending countless hours building one from scratch.
B12 AI website builder: Plans and pricingB12 follows a straightforward pricing structure with a focus on transparency, eliminating the need for add-ons or tacked-on hidden fees. B12 offers structured tiers tailored around business operational features rather than basic bandwidth caps.
B12 maintains a transparent pricing structure with no hidden platform add-ons, as core operational features like invoicing and scheduling are natively included. However, businesses seeking a completely hands-off setup can opt for B12’s optional "Do-it-for-you" professional design onboarding service, which carries a one-time setup fee of $1,999. Standard merchant processing fees also apply when collecting online payments.
Value comparisonB12 is significantly more expensive than standard DIY website builders like Wix or Hostinger. However, its inclusion of agency-level human design consulting and built-in client management tools—which would otherwise require separate subscriptions to scheduling, invoicing, and e-signature software—makes it a compelling value for service professionals.
Also, note that the entry-level plan, called Starter, is free and allows users to build their own website, intake clients, and receive online payments. But, like most free website builder plans, this option includes B12-branded banners on the site and invoices. Basic, on the other hand, priced at $49 per month or $42 per month when billed annually, includes features like a custom domain, online scheduling, and client intake forms, without any platform branding.
B12 AI website builder: Real-world testingIn my 30-minute test build, B12 delivered one of the fastest initial setups I’ve experienced. After answering a few basic questions about my business name, industry, and services, the AI engine generated a fully structured, multi-page draft complete with relevant copy, industry-tailored images, and working contact forms in under 60 seconds. The remaining 29 minutes allowed ample time to fine-tune section layouts, adjust branding colors, and configure online booking slots.
EditorB12 uses a structured block-based section editor rather than a freeform, pixel-perfect drag-and-drop builder. It's great at being clean and responsive by default. It prevents users from breaking layout alignment and automatically formats client tools (forms, invoices, schedules) to match your brand styling.
Having said that, design freedom is intentionally restricted. You cannot freely move elements anywhere on screen, and the platform lacks support for traditional e-commerce catalogs or inventory integrations like Shopify.
AIB12’s generative AI quickly drafts entire web pages, section layouts, and contextual copy based on short business descriptions. Additionally, its integrated ChatGPT-powered AI writer assists with generating blog posts, taglines, and marketing emails directly inside the dashboard.
Other standout AI tools that come packaged with the website builder include hybrid human and AI support, which gives you direct access to professional human design, copywriting, and SEO consultants to refine your AI-generated site. There's also an integrated service suite. Native scheduling, client intake forms, invoicing, and eSignatures are built into the core dashboard without requiring third-party plugins.
B12 AI website builder: Features(Image credit: B12)With its bevy of tools and expert support, B12 simplifies the process of creating, launching, and managing a website. It has a range of specific offerings that cater specifically to service-based businesses. Here’s a look at some of its standout features.
AI-generated website draft
B12's AI technology instantly generates a personalized website draft tailored to your industry in just 60 seconds. This draft includes relevant content, images, and a layout optimized for your business, providing a solid foundation to build upon.
Customizable design
Using the user-friendly B12 Editor, you can easily customize your website's design, color scheme, and content to match your brand. Alternatively, you can collaborate with B12's team of professional designers and copywriters to refine your site further.
Client engagement tools
B12 offers a suite of integrated tools to help you engage with clients and manage your business more efficiently. These include contact forms, online appointment scheduling, invoicing, and email marketing features, all seamlessly integrated into your website.
SEO optimization
From the start, B12 websites are search engine optimized to improve your online visibility. The platform also provides website analytics, allowing you to track your site's performance and make data-driven decisions to enhance your online presence.
Expert support and maintenance
B12's team of web design, copywriting, and SEO experts are available to help you create, launch, and maintain your website. This ongoing support ensures that your site remains up-to-date and optimized for the best chance of success.
B12 features outlinedFeature
Details
Free tier
B12-branded site, client intake, online payments
SEO tools
Built-in technical SEO, meta tags, and traffic analytics
Email marketing
Native audience segmentation and campaign builder (Professional plan+)
AI Site/Copy Tools
60-second AI draft generator and ChatGPT-powered AI text writer
Blogging/CMS
Simple blog engine with AI article drafting
B12 AI website builder: Setup(Image credit: B12)To begin, you'll need to register for an account on the B12 website. The registration process is quick and easy, requiring only your basic information and a valid email address. Once your account is created, B12's onboarding process will guide you through the initial setup, helping you familiarize yourself with the platform's features and capabilities.
When using B12 for the first time, AI-powered systems will generate a personalized website draft based on your industry and preferences. This draft serves as a starting point for your website, which you can then customize using the B12 Editor. The editor allows you to modify your site's design, color scheme, and content to align with your brand and vision. If you need assistance during this process, B12's team of design and copywriting experts is available to help you refine your website.
Configuring your B12 website is simple, thanks to the platform's user-friendly interface. You can easily add and manage pages, integrate your social media accounts, and set up essential features like contact forms and online scheduling. B12 also offers a range of built-in tools to help you engage with your audience and run your business more efficiently, such as email marketing and invoicing.
The platform is designed to grow with your business. You can easily update your website's content, add new features, and expand your online presence as needed. B12's team of experts is always available to provide support and guidance, ensuring that your website remains up-to-date and optimized for success.
Maintaining your website is a breeze, thanks to the automatic software updates and security measures. B12 takes care of the technical aspects of running your website, allowing you to focus on growing your business. With its comprehensive suite of tools and dedicated support team, B12 can help you create and manage your AI-powered website with ease.
B12 AI website builder: Help and support(Image credit: B12)Customers can reach B12's dedicated Customer Success team through multiple channels, including chat, email, and scheduled phone calls. The support team is available Monday through Friday, from 9:00 am to 6:00 pm ET, and strives to respond to inquiries within one business day.
B12's support team is known for its efficiency and customer-friendly approach. They take the time to understand each customer's unique needs and provide personalized assistance. When scheduling a call, the support team member reviews the customer's site beforehand to identify potential issues and formulate solutions, resulting in faster resolution and more thorough answers. Many reviews highlight the excellent work of individual team members, citing their expertise and dedication.
In addition to direct support, B12 offers a comprehensive Help Center with articles and guides covering various topics, from getting started with the platform to advanced features like email marketing and integrations. The self-service resource allows customers to find answers to common questions and learn the best practices for using B12's website builder.
B12 AI website builder: Final verdictB12 is a premium AI-powered website builder designed specifically for service providers. While it isn’t a good fit for professionals or businesses outside this demographic, it still manages to carve out a niche for itself with its feature-rich platform and excellent support.
Competitor alternatives Include:
Skip it if:
Overall, I really like the level of support on offer here, with the option to consult with dedicated design, copy, and marketing experts to help take your website to the next level. If you're a service-based business or consultant who wants an AI-generated site backed by real human design experts, paired with native tools to schedule appointments, send invoices, and collect e-signatures, B12 is the way to go.
B12 AI website builder: FAQsIs B12 suitable for e-commerce websites?No, B12 is not designed for traditional e-commerce stores that sell physical goods with shopping carts, inventory tracking, or shipping rules. Instead, it focuses exclusively on service-based businesses, offering built-in tools to bill clients, process online payments, and issue invoices.
How does B12 combine AI with human design help?B12 uses its AI engine to generate an initial, fully populated website draft in about 60 seconds. Once the draft is created, you can customize it yourself using the B12 Editor, or you can work directly with B12’s team of professional design, copywriting, and SEO consultants to refine and polish your site before launching.
Can I try B12 for free before committing to a paid plan?Yes, B12 offers a free Starter plan that allows you to build a website, receive online client intake, and accept payments. However, the free plan includes B12 branding on your published website and client invoices. To remove the branding and connect a custom domain, you will need to upgrade to a paid tier.
What business management tools are built into B12?Unlike traditional website builders that require third-party app installations, B12 includes native client management tools right out of the box. Depending on your plan tier, these include online appointment scheduling, custom client intake forms, invoicing, payment processing, e-signatures, contracts, and email marketing.
Is B12 hard to set up and maintain?Not at all. B12 uses a structured, section-based editor rather than an overwhelming, freeform drag-and-drop system. Technical tasks—such as software updates, SSL security, hosting, and basic technical SEO—are handled automatically behind the scenes so you can focus on running your business.
Webflow is an advanced, visual web development platform that bridges the gap between traditional no-code page builders and front-end coding. Based on my hours of testing, Webflow competes well in an increasingly crowded market with many of the other tools featured in our best website builder roundup. Yet while Wix remains our top pick for most users, Webflow targets a different audience entirely with its advanced feature set.
I find Webflow ideal for web designers, agencies, freelancers, and scaling businesses that require complete control over design, custom animations, and responsive layouts without relying on hand-coded development pipelines.
Rather than using arbitrary, absolute drag-and-drop elements, Webflow’s visual designer acts as a graphical user interface (GUI) for writing production-ready, semantic HTML, CSS, and JavaScript. It couples visual layout controls with a native CMS, e-commerce engines, and managed hosting.
Overall, Webflow delivers exceptional creative freedom, but this does come with a level of complexity that may overwhelm beginners.
Webflow: Pricing & plansWhen you start using Webflow, you’ll have the option to choose between site plans and workspace plans. (Image credit: Webflow)Webflow separates its pricing into Site Plans (hosting a specific site) and Workspace Plans (team collaboration and staging).
Site Plans
E-Commerce Plans
While Webflow’s advertised plan rates appear straightforward, several secondary costs can quickly increase your total investment. The most common additional expense comes from Workspace seat licenses, as adding agency members, developers, or client accounts to your primary workspace requires upgrading to paid account seats that run between $16 and $35 per seat each month.
Furthermore, Webflow focuses heavily on front-end design, meaning advanced backend features often require ongoing paid subscriptions to third-party tools. Businesses that need membership portals, complex automated workflows, or user-access control typically end up paying extra monthly fees for integrations like Memberstack or Zapier. Finally, if you run an online store, standard merchant processing fees through payment gateways like Stripe or PayPal will apply to every transaction alongside Webflow’s hosting fees.
Value ComparisonCompared to traditional site builders like Wix or Squarespace, Webflow carries a higher price tag once you scale to CMS and team tiers. However, compared to hiring dedicated front-end developers, its ability to convert visual designs directly into clean, exportable code makes it an incredible value for design-focused professionals.
It's also worth noting that Webflow offers one of the best free website builder plans. It includes everything you need to try Webflow. There’s no credit card required for setup and you can use it for an unlimited time. It includes access to a Webflow.io domain, 50 CMS items, and 50 form submissions.
Webflow: Real-world testingIn my 30-minute test build, I attempted to build a multi-section landing page from a blank canvas. Unlike beginner-friendly drag-and-drop editors, Webflow requires you to manually build out containers, sections, div blocks, and flex/grid containers before inserting content.
While a pre-built template allowed me to customize a sleek three-page agency layout in roughly 20 minutes, building from scratch within 30 minutes proved nearly impossible for anyone unfamiliar with box-model web mechanics.
EditorWebflow’s interface mirrors professional software like Photoshop or Figma, mapped directly to front-end code. It shines with its pixel-precise visual control over CSS Grid, Flexbox, custom animations, hover states, and responsive the breakpoints, but it could be better in terms of its ease of use. The learning curve is steep.
Beginners cannot simply drag an image anywhere on screen without breaking layout hierarchy, and there is a hard limit of 100 static pages per project.
Here's a picture of a free Webflow template (Image credit: Webflow)AILike many other AI website builders, Webflow offers an AI assistant to help you get things done. For example, Webflow's AI assistant will allow members of your team to quickly design and generate new styled content by using conversational prompts. Additionally, tools like Webflow Optimize provide AI-driven A/B testing and content personalization directly within the designer workflow.
Webflow's AI assistant can also generate a full CMS item with contextually relevant content based on a simple prompt. This will be a huge time saver for agencies and businesses looking to spin up realistic content for new pages.
Webflow: FeaturesWebflow offers an impressive feature set that rivals professional development tools while maintaining visual accessibility. (Image credit: Webflow)Webflow offers an impressive feature set that rivals professional development tools while maintaining visual accessibility. Some standouts include Webflow University - a free, industry-leading educational hub with hundreds of video courses that teach visual web development concepts from the ground up. Its clean code export is also impressive. On paid Workspaces, you can export your site's raw, optimized HTML/CSS/JS code to host anywhere.
Elsewhere, the platform's Designer interface provides holistic CSS controls, including advanced layout options like CSS Grid and Flexbox, custom animations, and responsive design tools. You can create complex interactions, manage global design systems, and even add custom code when needed.
E-commerce functionality covers essential online store needs, though it's not as comprehensive as dedicated platforms like Shopify. You can manage products, customize checkout experiences, and integrate with payment processors like Stripe and PayPal. However, advanced e-commerce features like subscription billing or complex inventory management require workarounds or third-party integrations.
AI additions include an AI Assistant for generating page sections, Webflow Optimize for conversion testing, and an AI Site Builder in beta. These tools speed up common tasks without replacing the need for design expertise. The pricing reflects this feature richness. While more expensive than basic builders, the professional capabilities justify the cost for users who need design flexibility and clean code output.
Webflow features outlinedFeature
Details
Free tier
Unrestricted time, webflow.io domain, 50 CMS items
ECommerce
Customizable checkout, product variants, inventory setup
SEO tools
Native schema, auto-generated sitemaps, 301 redirects
AI Site/Copy Tools
Section generation, AI content creation, Webflow Optimize
Blogging/CMS
Highly custom database structures (Collections)
App marketplace
Growing hub of third-party plugins (e.g., Adobe Express)
Code export
Export raw HTML/CSS/JS zip files (Workspace plans)
Webflow: SecurityWebflow has a high level of security compared to other web hosts (Image credit: Webflow)Webflow provides enterprise-grade security features that protect both websites and user data. All sites receive automatic SSL/TLS encryption, with the platform having transitioned to TLS 1.3 encryption in 2022 for enhanced security. The hosting infrastructure includes DDoS protection and automatic backups, ensuring your website remains accessible and recoverable in case of issues.
Additional security measures include PCI-DSS compliance for e-commerce sites and two-factor authentication for account access. Webflow's cloud-based architecture means security updates and patches are applied automatically, reducing the maintenance burden on users while keeping sites protected against emerging threats.
Webflow: SupportWebflow offers multiple support channels, though the quality and availability vary by plan tier. (Image credit: Webflow)Webflow offers multiple support channels, though the quality and availability vary by plan tier. All users can access the comprehensive Webflow University, which provides detailed tutorials, courses, and documentation covering everything from basic design principles to advanced development techniques. The community forum is active and helpful, with both Webflow staff and experienced users providing assistance.
Paid plan users receive email support, with response times varying based on plan level. Business and Enterprise customers get priority support with faster response times and dedicated account management. However, phone support isn't available across all plans, which some users find limiting compared to competitors.
The platform has also introduced AI-powered customer support tools and help desk integrations, allowing businesses to provide better support to their own customers through Webflow-built sites. While the company's own support is generally helpful, the learning curve means you'll likely need to invest time in their educational resources regardless of your plan level.
Webflow: Final verdictNo matter what stage you’re at with building a website, there’s a lot of options on Webflow that could take your website to the next level. The downside is that you can’t export CMS content; however, you will have access to plenty of free materials.
Competitor alternatives include:
Choose Webflow if: You are a web designer, agency, or business owner who wants absolute creative control, custom responsive animations, and clean, developer-grade code output without hand-coding.
Skip Webflow if: You are a complete beginner looking for a simple, instant drag-and-drop setup. You don't understand (or want to learn) basic web design principles like Flexbox, CSS Grid, and responsive breakpoints. Or you need an all-in-one platform with built-in native email marketing and advanced built-in e-commerce tools out of the box.
Webflow comes with an entire library of video resources, hundreds of free templates, and you can use the free version for an unlimited time. The interface is also very organized - it doesn’t feel like you’re using a cheap web host. Templates look professional and everything is well organized. Overall, Webflow is a great web host, especially if you want to learn new tricks for making website building a lot easier.
Webflow: FAQsIs Webflow suitable for beginners?Webflow has a steeper learning curve than traditional website builders like Wix or Squarespace. While you don't need coding skills, understanding web design concepts like responsive breakpoints, flexbox, and CSS properties will help you succeed. The platform offers extensive educational resources through Webflow University, but expect to invest several weeks learning the interface and best practices.
Can I migrate my existing website to Webflow?Webflow doesn't offer automated migration tools from other platforms. You'll need to rebuild your site using Webflow's Designer interface, though you can import content through CSV files for blog posts and other structured data. The process requires manual work but gives you the opportunity to improve your site's design and performance during the transition.
What are Webflow's main limitations?Webflow has several notable limitations including a 100 static page limit per project and 10,000 CMS items per site. The platform also requires a stable internet connection since it's entirely cloud-based. E-commerce features, while solid, aren't as comprehensive as dedicated platforms like Shopify. Version control is only available on Enterprise plans, which can complicate team workflows.
In recent years, WiiM has emerged as a serious multi-room rival to Sonos, and now it’s looking to try its hand in the world of Dolby Atmos soundbars. Yes, the WiiM Bar is the company’s first ever soundbar, and is bringing virtual Atmos, a unique screen-equipped design, and a big array of connectivity options to the table.
Just how good is the WiiM Bar, then? Can it truly compete with soundbars from the likes of Sonos? Here’s my view after hours of testing it.
If you want to compete with the best soundbars around, you better sound good — and luckily the WiiM Bar is a very solid performer. It’s a standalone 3.0.2 model, so it doesn’t come with a sub or surround speakers, and skips on up-firing drivers for ‘true’ Atmos, but given these restrictions, it’s actually a very capable model indeed.
(Image credit: Future)When watching Godzilla Minus One, the sound of a plane flying overhead was genuinely convincing, with the vertical movement tracked precisely for a model using virtual Dolby Atmos. As the plane came into land, its descent was mapped brilliantly, sounding as if the audio was coming from beneath me. During a separate scene, I was also really impressed with the soundbar’s handling of dialogue — it was clean and well separated from the action, even when Godzilla appeared and some heavy bass entered into the mix.
I had a similar experience with The Super Mario Galaxy Movie, which features an excellent Dolby Atmos mix. Dialogue between the Toads in Peach’s Castle was phenomenally clear, and sounds like hammers being thrown and Yoshi’s tongue flinging across the screen were tracked beautifully, resulting in a truly expansive viewing experience.
If I was to be a bit critical, though, I’d say that the WiiM Bar doesn’t produce the most dynamic sound I’ve heard at this price-point. Sudden noises, like Godzilla’s almighty roar or the Castle being destroyed in each respective film sometimes lacked the sheer impact and bite I was looking for. The lowest frequencies can feel, at times, a touch subdued, so adding a sub to the WiiM bar is sure to make a world of difference, though this will come at quite the cost.
This isn’t to say that bass performance is poor, though. In Nosferatu, the eerie score came through with decent power, and the deep, spine-chilling sound of Count Orlok’s voice was replicated effortlessly. And once more, the WiiM Bar provided stunning width, with the disgusting sound of rats eating flesh sounding as if it was emanating from the corner of our testing room. It feels weird to describe that positively, but there you go.
In terms of musicality, the WiiM Bar is good, rather than great — which is pretty standard for a soundbar of this kind. When listening to First Night by Vitess, the low-end wasn’t the most regimented, meaning that pumping bass wasn’t as rhythmic as it could’ve been. However, darker frequencies still hit with decent weight and synths in the mid-range had really good presence and definition. Atmos mixes were also presented with plenty of width and depth, so you can expect solid, albeit imperfect music performance here.
Something else that impressed me with the WiiM Bar was its sheer loudness. A 135W maximum power output may not seem that high, but this thing can climb to seriously impressive volumes, which is ideal for filling a larger space with cinematic sound. On the other end of the spectrum, you can activate Night mode for a more low-key, softer listening experience, and this works really well.
(Image credit: Future)On top of this, there’s a Voice mode, which is perfect for podcasts or bringing dialogue forward in TV shows and movies; Movie mode for the most cinematic audio possible; and a Music setting to use while blasting your favorite tunes. These can be selected with the included remote or through the WiiM app, which is overflowing with features.
Yes, I was seriously impressed by the WiiM app — it’s easy to use, well laid out, and incredibly feature-rich. Here, you can customize the soundbar’s display, edit EQ for each individual source (with both traditional and parametric options available), change voice assistant and streaming settings, and so much more. Arguably my favorite feature, though, was RoomFit. This provides a customized parametric profile to provide optimized sound for your space, with individualized EQ calibrations for the left, center, and right channels. I’ve never seen such a detailed calibration tool in my time testing Dolby Atmos soundbars, so this seriously impressed me.
Something else that the WiiM Bar excels in is versatility. It has a very solid range of connectivity options, including HDMI eARC, Bluetooth, Wi-Fi, digital optical, USB, and even RCA for devices such as turntables. In addition, it supports both the Dolby Atmos and DTS:X formats, which is great to see given that the latter isn’t found on models from the likes of Sonos. Combine that with the ability to pair compatible WiiM subs and surround speakers, and you’ve got a great entertainment hub.
One option that would’ve made the WiiM Bar even better, though, would be HDMI passthrough. This model only has a single HDMI eARC port to connect the bar to your TV, so you can’t connect a games console or streaming device up to this as well. Hooking up a soundbar already takes one precious HDMI port up, and if, like me, you have a lot of consoles at home, this could prove to be pesky. This is very common for a soundbar in this price and size-range, but it would’ve made a great addition all the same.
Another thing that’s missing is AirPlay 2 support, which may irk some iOS users. There is Google Cast, though, and Bluetooth is on hand for streaming media from iPhones, even if it won’t be as seamless or high-res as a Wi-Fi connection.
Right, it's time to talk about one of the most unique things about the WiiM Bar — its design. And, well, I’m pretty conflicted about this. The display functions well; it can show a clock with a customizable background, has some neat control options for different sound modes and such things, and can even display the album you’re listening to when streaming music. It's responsive and decently bright, so I do think it works overall.
The problem for me, though, is that it gives the soundbar a slightly awkward look. Even if you turn the display off, the raised center isn’t exactly svelte. Also, the plain black bar is just OK looking, but doesn’t exactly have that premium feel that Sonos soundbars exude. This is just my personal take, of course, and some may like the overall aesthetic and rounded center of the WiiM Bar — I just don’t think it's the most attractive.
One aspect of the WiiM Bar’s design that I like, though, is its remote. This feels really well made, has individual buttons for each sound mode, and even a built-in mic for voice controls. Of course, you can use the app to control the soundbar instead, but for a bundled remote, the quality is great.
Here’s the big question, then: is the WiiM Bar worth the money? For the most part, yes. At $479 / £449 / AU$769, it's in the mid-range category, and you get plenty of quality in return for that spend. Great virtual Atmos, clear overall sound and dialogue, neat connectivity options, the option to expand it into a surround system… nthe list goes on. It’s not perfect, though and models like the pricier Sonos Beam Ultra surpass it in terms of sound and design. What’s more, an on-sale Samsung HW-Q800F will give you better bass, and has dedicated up-firing drivers for ‘true’ Atmos.
But if you’re already invested in the WiiM ecosystem or want a solid single-box solution, I think you’ll be pleased with the WiiM Bar when all’s said and done.
(Image credit: Future)WiiM Bar review: price & release dateThe Wiim Bar was released in October 2026, and is the very first soundbar that the multi-room specialist and Sonos rival has put out. It comes in at $479 / £449 / AU$769, placing it at a very similar price-point to the compact Sonos Beam Gen 2.
WiiM Bar review: specsDimensions
41.7 x 4.1 x 3.1 inches / 1060 x 105 x 80mm
Speaker channels
3.0.2
Connections
HDMI eARC, digital optical, RCA, USB, Wi-Fi 6E, Bluetooth 5.3, Ethernet
Dolby Atmos / DTS:X
Yes / Yes
Sub included
No
Rear speakers included
No
(Image credit: Future)Should I buy the WiiM Bar?Attribute
Notes
Score
Features
Atmos and DTS:X, excellent app, good connectivity options but no HDMI passthrough or AirPlay 2.
4.5/5
Performance
Powerful, expansive audio with clean dialogue, not the most dynamic and bass not the most impactful.
4/5
Design
A little awkward looking, but the display works well, good quality remote.
3.5/5
Setup & usability
Easy to setup and use with a TV and external devices.
4.5/5
Value
A good price for the overall quality.
4/5
Buy it if…You want impressive Atmos in a single, compact soundbar
Sure, the WiiM Bar lacks upfiring drivers for ‘true’ Dolby Atmos, but I was still really impressed with the verticality and width of its sound. Whether you’re watching Atmos movies or listening to an Atmos mix of your favorite track, the soundbar will whip up a delightfully expansive impression every time.
You want a soundbar you can build out over time
Something that makes the WiiM Bar so great is its versatility. It will serve you well as a single-bar option, but it can also be built out over time, as it enables you to add a compatible sub and surround speakers if you so choose.
You’re looking for the most dynamic bass output possible
The WiiM Bar plates up solid low-end power for a single-box soundbar, but it’s not the most dynamic or impactful I’ve experienced, and adding a separate sub can be costly. As a result, I’d recommend grabbing a model like the Samsung HW-Q800F, which comes with a subwoofer, serves up mesmerizing bass, and can often be found for a similar price to the WiiM Bar now that its successor has launched.
You want HDMI passthrough
A soundbar already takes away a coveted HDMI slot on your TV, so it’s always nice to get a passthrough slot to connect a games console or streaming device up to. But like a lot of its mid-range counterparts, the WiiM Bar skips on this.
WiiM Bar
Sonos Beam Gen 2
Samsung HW-Q800F
Price
$479 / £449 / AU$769
$449 / £449 / $699
$1,099 / £799 / AU$1,099
Dimensions
41.7 x 4.1 x 3.1 inches / 1060 x 105 x 80mm
25.6 x 2.7 x 3.9 inches / 651 x 68 x 100mm
Main soundbar: 43.7 x 2.4 x 4.7 inches / 1110.7 x 60.4 x 120mm; subwoofer: 9.8 x 9.9 x 9.8 inches / 249 x 251.8 x 249mm
Speaker channels
3.0.2
5.0
5.1.2
Connections
HDMI eARC, digital optical, RCA, USB, Wi-Fi 6E, Bluetooth 5.3, Ethernet
HDMI eARC, Ethernet, Wi-Fi
1x HDMI input, 1x HDMI eARC, digital optical, Wi-Fi, Bluetooth 5.3
Dolby Atmos / DTS:X
Yes / Yes
Yes / No
Yes / Yes
Sub included
No
No
Yes
Rear speakers included
No
No
No
Sonos Beam Gen 2
Given their incredibly similar price-points and Wi-Fi capabilities, the Sonos Beam Gen 2 and WiiM Bar feel like very natural rivals. The Beam Gen 2 is an excellent compact soundbar that produces impeccable bass output and relatively expansive Atmos for its size. It lacks the broad connectivity options of the WiiM Bar and skips on DTS:X, but it’s even smaller, and can similarly be expanded if you have a compatible sub and surround speakers. Read our full Sonos Beam Gen 2 review.
Samsung HW-Q800F
Yes, on the face of it this soundbar seems too expensive to be a WiiM Bar rival, but I’m often seeing it on sale for a heavily discounted price now — as low as $540 in the US and £499 in the UK. This model comes with a dedicated sub for gigantic bass output, has up-firing speakers for ‘true’ Atmos, and supports HDMI passthrough. As a result, it’s very hard to beat. Read my full Samsung HW-Q800F review.
I spent many an hour testing out the WiiM Bar, using it both watching movies and listening to music. I assessed its qualities at our TV testing space at Future Labs, where I made use of all of the soundbar’s features and compared it directly against rivals.
For the most part, I used the HDMI eARC connectivity method to hook the WiiM Bar up to the LG G6 OLED TV, and played 4K Blu-ray discs with the Panasonic DP-UB820 to judge its handling of Dolby Atmos movies. However, I did also test the soundbar out with Netflix movies, and used Tidal Connect to stream music over Wi-Fi.
More generally, I’ve tested more than 30 soundbars during my time here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed everything from budget-friendly bars like the Sony HT-SF150 through to huge surround sound systems such as the JBL Bar 1300MK2, and I made sure to compare the WiiM Bar to multi-room rivals, including the Sonos Beam Ultra.
While many wireless gaming mice are content with wired play-and-charge, the Sensei Pro takes a different tact with a battery management concept that, while not entirely new, may steer the sector in a new direction given its implementation by an esteemed brand such as SteelSeries.
In terms of looks, though, the Sensei Pro hardly departs from your typical symmetrical mouse. Its design is largely functional, with a small logo and orange scroll wheel being the only concessions to style. There are no odd angles or shapes here, or even any RGB lighting.
(Image credit: Future)The standard model is quite large, and the prominent central hump might feel uncomfortable to certain hands. It took me a little while to adjust to it, but once I did I found it quite comfortable, helped by the super smooth finish of the shell. Those wanting more texture can attach the included grip tape to the sidewalls, mouse buttons, and even the back buttons.
Despite its bulky shape, the Sensei Pro is actually very light, weighing just 53g, yet feels perfectly solid and sturdy. This attention to build quality extends to the buttons, which all operate smoothly and provide satisfying feedback. My one gripe is with the DPI button: it’s placed underneath, a location I usually find impractical when playing games requiring frequent menu access and the like. Not only is it underneath, it’s to the right, which means right-handers won’t be able to reach it easily with their fingers.
You can customize the inputs of the Sensei Pro using SteelSeries’ GG software. Here you’ll find a remapping facility with plenty of options, including a healthy selection of media and system shortcuts. You can also adjust the DPI from 1K to 65K, with five customizable presets to cycle through. Not only that, but you can also adjust the DPI for the X and Y axes independently, which isn’t something I’ve often seen.
(Image credit: Future)Then there are some features I’ve never seen before. These include click response adjustments between 0ms and 20ms, mouse movement acceleration tuning using preset graph curves, and sensor tilt adjustments by 45 degrees in either direction, in order to accommodate the natural angle of your hand movements. And while I’ve seen angle snapping modes in numerous other gaming mice software, I haven’t seen one with 10 levels of ‘straightening’ as there is here. Nor have I seen a scroll jump protection feature with as large a threshold range to play with (100ms to 1500ms). Other adjustments include independent lift-off and landing distance adjustments, as well as a motion sync toggle.
Again unlike many gaming mice, you can set the Ultra-wideband (UWB) polling and sensor rates separately, each with a range of 125Hz to 8KHz (with 9KHz overpolling). The explanation provided for these settings is clear and detailed, although it’s a shame 9K overpolling isn’t explained. In fact, the explanations for most features in GG are welcome, and go beyond what peripheral software usually provide. It also very handily tells you if you have Windows’ enhanced pointer precision setting enabled, and offers to disable it for you to improve performance. The overall layout of GG is clear and easy to navigate as well, although I found it slightly annoying that the actual adjustments section opens in second windows, introducing unnecessary desktop clutter.
When gaming, the Sensei Pro is a competent mouse. It glides with supreme smoothness, thanks to its large skates, while the mouse buttons are well lubed and very tactile. They have a deeper travel than many others, though, and might be a bit too heavy for those after seriously rapid spamming.
(Image credit: Future)The side buttons and middle click are fantastically clicky, and are some of the best I’ve used. The former have a pleasingly deep travel, which only makes them more satisfying, while the latter feels like a proper button without the awkwardness that can often blight other examples. What’s more, I didn’t perform any accidental flicks when pressing it, even with Scroll Jump Protection disabled. The notching is perfectly weighted, too, allowing for both controlled single flicks and quick multiple swipes when needed.
Not being a pro gamer myself, I can’t honestly say I noticed any difference in polling and sensor rates above 1K, and certainly couldn’t discern the advantage of 9K overpolling. What I can tell you is that enabling the maximum rates, as well as the maximum sensor performance, drains battery life very quickly; you’ll get about a day’s worth at best. Dial back the polling to 1K, though, and you'll get much closer to SteelSeries' claimed top-end longevity figure of 120 hours.
(Image credit: Future)But this is where the Sensei Pro’s USP comes into play — something SteelSeries calls the Infinite Power System. Rather than using a USB cable to play and charge at the same time, you cycle between two batteries: the one in your mouse and the other that charges on top of the UWB station. There’s no need to ever go wired — in fact, you can’t, since there’s no USB-C port on the Sensei Pro. The batteries themselves are quite easy to remove and insert, with a dot to indicate the correct alignment of the pins underneath, and requiring a simple twist to lock into place underneath the mouse. I didn’t experience any issues with the battery coming loose at any point.
So if you don't want to resort to wired play when you run flat, the Sensei Pro fits the bill perfectly. It’ll also cater to those fanatical about polling rates and deep tweaking. It’s a shame there’s no additional Bluetooth mode (especially at this price), and the relatively heavy clicks aren’t for everyone, but in other respects the Sensei Pro is sublime in action — you’ll just have to part with a large amount of cash for the privilege.
(Image credit: Future)SteelSeries Sensei Pro review: Price & availabilityThe Sensei Pro costs $179.99 / £169.99 (about AU$260) and launches October 13, although preorders are open now. Full size and mini variants are available, in either black or white.
This is very expensive for a wireless gaming mouse. It’s marginally less expensive than the Razer Naga V3 Pro, but the Naga has additional Bluetooth support, as well as a plethora of customizable buttons on the side. And if you want the same ‘infinite’ battery life, it’s compatible with the Razer’s HyperFlux V2 Wireless Charging System (read: a power-supplying mouse pad), although this is a costly optional extra on top of what is already a costly pointer.
If you fancy another mouse with a swappable battery system, the AngryMiao AM Infinity.97 is a viable alternative. This is slightly less expensive than the Sensei Pro, and is even lighter than the Sensei Pro (and much lighter than the Naga), tipping the scales at just 47g. Its looks might not be to every gamer’s tastes, though, and we weren’t particularly impressed with its basic software.
SteelSeries Sensei Pro review: SpecsConnectivity
Ultra-wideband
Battery life
120 hours (1K), 32 hours (8K)
Sensor
TrueMove 42K Pro Sensor
Polling rate
8KHz (with 9KHz overpolling)
Maximum sensitivity (DPI)
42,000 (65,000 with DPI Overdrive)
Programmable buttons
6
Dimensions
125.6 x 66.5 x 38.6mm
Weight
53g
Should I buy the SteelSeries Sensei Pro?SteelSeries Sensei Pro ScorecardAttribute
Notes
Score
Design
High quality and lightweight construction, but the bulbous hump may deter some gamers. Also, the DPI button is inconveniently placed.
4/5
Performance
Every button feels great, although clicks are a little too heavy for easy spamming. Performance tweaking is a cut above many rivals, though.
4.5/5
Value
This is about as pricey as gaming mice get, and many of its features will be overkill for lots of gamers.
3/5
Buy the SteelSeries Sensei Pro if…You never want to go wired
With many wireless mice, you’ll have to plug in eventually. Not so here — just swap your batteries around when you run dry.
You want the best polling rate possible
How important high polling rates actually are is up for debate, but if it matters for you, the Sensei Pro’s 9K over-polling facility is pretty much unbeatable.
You want multiple wireless modes
There’s no Bluetooth support for easy hot-switching, which is a shame on a mouse this expensive.
You want the fastest clicks
While the clicks have great feedback, they’re a little heavier than most, which may impede spams.
Razer Naga V3 Pro
The Naga may be even more expensive than the Sensei Pro (though only slightly), but it does offer more useful features, such as plenty of programmable side buttons and additional Bluetooth support. You can get the same ‘unlimited’ battery life too if you pair it with Razer’s powered mouse mat, but this adds yet more expense. Read our full Razer Naga V3 Pro review.
AngryMiao AM Infinity.97
If the idea of swappable batteries appeals to you, then the AM Infinity.97 is another candidate worth considering. It’s almost as dear as the Sensei Pro, but it’s slightly lighter and has a more unique — if more divisive — design. Read our full AngryMiao AM Infinity.97 review.
I tested the SteelSeries Sensei Pro for several days, during which time I used it not just for gaming, but also for working and general browsing.
I played games such as S.T.A.L.K.E.R. 2: Heart of Chornobyl and Counter-Strike 2, the latter of which is a stern test for peripherals given the demands it places on quick and accurate movements and clicks.
I’ve been PC gaming for a long time, and have used and reviewed a large variety of gaming mice in that time, from modest budget offerings to expensive feature-packed, pro-level pointers.
Light spoilers follow for Clayface.
Not many people would've predicted that a Clayface movie would be part of James Gunn and Peter Safran's DC Universe (DCU). Three years after Gunn unveiled the initial DCU slate, fewer still expected a shape-shifting villain to beat heavy hitters like Batman and Wonder Woman to the big screen.
And yet, here we are. Four months after Supergirl bombed at the box office, Clayface feels like a crucible moment for a cinematic universe that's still trying to find its footing and drop a few spontaneous surprises along the way. And, while the lovingly crafted origin story delivers on the latter front, it doesn't fully succeed in helping to shape the direction of DC's fledging comic book franchise.
Face/OffClayface is arguably the biggest role of Welsh actor Tom Rhys Harries' career so far (Image credit: DC Studios/Warner Bros. Pictures)Clayface stars Tom Rhys Harries as Matt Hagen, a Gotham City native and an actor on the cusp of superstardom. However, while celebrating a career-defining Best Actor award nomination, Hagen makes the fatal error of sleeping with Mia Torrez (Joana Ribeiro), the girlfriend of high-profile mobster Markos Szabo (David Dencik). In retaliation, Szabo’s henchmen brutally attack Hagen, disfiguring his prized face and destroying his life overnight.
Clayface feels like a crucible moment for the DCU
Abandoned by his allies and, after he takes Szabo to court for his crimes, failed by the justice system, a desperate Hagen seeks out Doctor Caitlyn Corr (Naomi Ackie), a researcher testing an experimental, regenerative nanocell therapy. However, while the initial trial restores his handsome features, Hagen soon succumbs to the treatment's terrifying side effects, leading him down a self-destructive path of revenge.
Matt Hagen is left horrifically scarred by his run-in with Szabo's men (Image credit: DC Studios/Warner Bros. Pictures)It might sound strange, but witnessing a full-blown origins story is a rarity in this nascent comic book universe.
Sure, Supergirl was peppered with flashbacks of Kara Zor-El's life on Krypton, while Lanterns on HBO Max spotlighted John Stewart's journey to becoming a Green Lantern. Generally, though, DC Studios has deliberately shied away from origin tropes, which makes Clayface a rare exception to the rule.
Given that Clayface remains a mystery to anyone outside hardcore comic book circles, this focus on Hagen's transformation into the monstrous Batman adversary isn't only justified, but ultimately necessary.
Acting on impulseHagen's emotional turbulence is captured in near-pitch perfect fashion by Harries (Image credit: DC Studios/Warner Bros. Pictures)More importantly, though, Clayface gives Harries ample room to fully explore this deeply tragic individual. Hagen isn't just a monster in the making; he's a man drowning in grief, wrestling with the overwhelming despair of losing his face and career overnight, and, eventually, his humanity.
Having lost his sense of self post-attack, Hagen attempts to literally and figuratively rebuild himself with Corr's pioneering yet hazardous serum. But, as the treatment heightens his darkest impulses, his emotional turmoil curdles into unbridled rage.
Clayface gives Harries ample room to fully explore this deeply tragic individual
This descent — from heartbroken victim to full-blown villain — gives Harries complete freedom to examine and showcase Hagen's devastating psychological unraveling. Running the full emotional gamut, Harries delivers a multi-layered performance worth talking about, brilliantly veering from fear and fury, to dismay and infatuation with an ease that cements his leading man credentials.
Moreover, Harries will leave you conflicted over whether you should actually be rooting for Hagen. Yes, his personal and professional ruination will draw sympathy, but Clayface's major narrative pivot point — i.e. the moment Hagen starts enacting revenge on his betrayers — quickly sees that compassion dissipate as his killing spree devolves from tragic accidents to cold premeditation.
Hagen and Corr's complicated dynamic is exacerbated by the former's transformative unraveling (Image credit: DC Studios/Warner Bros. Pictures)But, this isn't just the Harries show. A large part of Clayface's storytelling success stems from the co-dependent, emotional dynamic between Harries' Hagen and Ackie's Corr.
A large part of Clayface's storytelling success stems from the co-dependent, emotional dynamic between Hagen and Corr
Initially built on a shared idealism of proving Corr's treatment is safe to use on humans, there's a satisfying earnestness to Hagen and Corr's embryonic bond at the outset. However, as their toxic obsessions take over — particularly where Hagen's unrequited limerence toward Corr, who he romanticizes as his savior, is concerned — their connection morphs into a warped romance with shades of Fatal Attraction, Phantom of the Opera, and a dark, twisted inversion of (500) Days of Summer.
Max Minghella's Gotham police detective isn't given much to do in Clayface (Image credit: DC Studios/Warner Bros. Pictures)While the exploration of this increasingly discomforting bond is worthy of praise, I was disappointed that the love triangle between Hagen, Corr, and her Gotham cop boyfriend John Borelli (played by the ever-watchable Max Minghella) wasn't examined further.
With a lean, sub-two hour runtime, there's only so much narrative runway afforded to this DCU Chapter One entry. Nonetheless, I would've liked to see more the burgeoning rivalry between Hagen and Borelli that's only lightly peppered throughout.
I'd level a similar criticism at the underuse of Hagen's new shape-shifting abilities, specifically with how his acting background influences his powers. Sure, he combines his craft and superhuman talents to good effect as his quest for vengeance takes over. Still, while the creativity displayed in the film's climactic, gruesomely camp set-piece is plenty of fun, I was left wanting more from a premise with so much theatrical potential.
Monster mayhemClayface has some issues it needs to face up to (Image credit: DC Studios/Warner Bros. Pictures)Clayface doesn't fully lean into its skin-crawling body-horror potential, either. In a ironic twist for a movie about shape-shifting, the film suffers from its own identity crisis, never quite deciding whether it wants to be an uncompromising creature feature or a low-budget comic book flick.
I wish Clayface had leaned harder into viscerally repulsive territory
To be fair, there are some wonderfully grotesque moments that'll delight genre enthusiasts and leave more squeamish viewers wriggling uncomfortably in their seats. Moreover, while visual effects have an increasingly important role as Hagen's transformation progresses, it's the practical makeup that helps to really elevate Harries' performance, and add a real tactile viscosity and nauseating quality to his physical degradation.
How much more horrifying would it have been to see this full scene for the first time on the big screen? (Image credit: DC Studios/Warner Bros. Pictures)That said, I wish it had leaned harder into viscerally repulsive territory, especially given its most nightmarish moments are featured heavily in its first, second, and third trailers. A few more of the 'show and tell' body-horror beats that Clayface handles so well, rather than deliberately dodging them with cliched, shadow-draped discretion shots, would've gone a long way to appeasing me.
Thankfully, the DCU's take on Gotham City doesn't suffer a similar atmospheric fate.
As grimy and seedy as any live-action iteration of the fictional megalopolis, Clayface presents Gotham as a stylish, neon-drenched playground. Blending rain-slicked noir aesthetics with a vibrant, comic-book palette, it creates a city that feels both oppressively dangerous and visually intoxicating. Its striking combination of Batman: The Animated Series' heightened gothic style and the gritty realism of Matt Reeves' The Batman is particularly notable, especially when you consider Clayface was originally pitched as a spin-off of the latter. Such comparisons will do little to assuage so-called 'merger bros', who want nothing more than to see Robert Pattinson's Dark Knight grapple-hook his way from Reeves' Bat-Verse to the DCU.
My verdictPart-monster movie, part-Shakespearean tragedy, Clayface is a film of captivating contradictions. Driven by Harries' powerhouse lead performance, it delivers a surprisingly intimate and tragic character-driven story that explores the artificiality of fame, and puts a devotedly modern day spin on 'Feat of Clay', the two-part Batman: The Animated Series tale, it's inspired by. Even so, its hesitation to fully embrace its primary genre underpinnings, coupled with a few underbaked subplots and underutilized shape-shifting gags, holds it back from true greatness.
As a litmus test for the DCU, Clayface raises more questions about the franchise's broader direction after Supergirl and Lanterns. More generally, it doesn't reshape the mold for comic book cinema.
What it accomplishes, though, is far more intriguing: it proves Gunn and Safran are willing to take genuinely weird, character-focused gambles. I crave the next Batman, Wonder Woman, or Justice League film as much as the next person but, if we get more of these smaller scale offerings alongside their blockbuster brethren, Clayface will prove to be a risk worth taking.
Clayface is out now in multiple international territories, and will be released in US theaters on Friday, October 23.
When the Antigravity A1 launched in 2025 it was the world’s first 360-degree drone, and for a brief time the only such drone, until the DJI Avata 360 was released shortly after. These two models remain the only 360-degree drones currently available, with their differing designs offering slightly different propositions for drone pilots, depending on what you’re aiming for.
You can fly both drones with FPV goggles and Motion Controllers, though the Avata 360 can also be flown with a standard drone controller. The Antigravity A1’s design makes it look like a camera drone, but with top and bottom 360-degree cameras, while the standard kit's FPV goggles and Motion Controller let you fly immersively with a 360-degree view of your surroundings; you can look around as you fly, which is quite an experience.
A 360-degree drone lets you reframe photos and videos after you’ve captured them, opening up a wealth of creative potential. They're not for everyone, but they undoubtedly provide both an interesting flying experience and equally interesting editing possibilities. The Antigravity A1 Follow Me Bundle is designed to expand the functionality of the drone, and the creative options available to users, further.
James AbbottJames AbbottJames AbbottThe Antigravity A1 Follow Me Bundle enables hands-free shooting, and obviates the need to use the A1’s FPV goggles and Motion Controller for flight. It also improves subject tracking, and offers automated flight patterns for capturing selfies, similar to the DJI Neo 2.
The Follow Me Bundle includes several accessories, with the Watch Remote allowing you to set the flight mode, and the Ring Remote allowing you use gestures to adjust the position of the A1 when in flight.
The Watch Remote also features built-in GNSS for greater precision when the drone is tracking you during fast-paced activities such as cycling, and allows you to select the subject that will be tracked.
The Follow Me Bundle also opens up one-tap cinematic shots, which are automated flight patterns, alongside advanced subject-tracking modes. The former include Fly Away, Antigravity Line, Ascend, Oval Orbit, Spiral Ascent, Arc Shot and Arc Out, while the tracking modes include Manual Mode, Deep Track, Orbit Follow, Cycling Track and Ski Track.
The one-tap cinematic shots, like any automated flight patterns, may feel a bit 'samey' after a while, but they’re fun to try out. It’s the new subject-tracking modes that are most interesting.
James AbbottJames AbbottJames AbbottJames AbbottJames AbbottThe subject-tracking modes and one-tap cinematic shots can’t be faulted, and the Antigravity performs incredibly well here. I had it track me while running, skateboarding, and cycling through complex environments, including between and under trees, and the A1 didn’t miss a beat. Not to mention, you get the bonus of being able to reframe footage and add effects in Antigravity Studio.
The Watch Remote enables you to initiate take-off and landing and Return to Home, and make basic adjustments to the drone’s position, alongside setting the flight mode and selecting the subject to be tracked.
The Ring Remote offers a Drag-to-Fly feature, where you press and hold the button on the ring, and can then move your hand and arm to adjust A1’s flight position in relation to you to fine-tune its tracking distance and position.
The Watch Remote is about the same size as a smartwatch, with a 1.72-inch LCD screen. It is, however, about 1.5x the depth/thickness of your average smartwatch. The Ring Remote fits a finger circumference of 1.8-2.8 inches / 46-70mm. Both offer IP67 water resistance and, as we’ve discussed, a unique way to control your Antigravity A1 drone.
The main downside of the kit — cost aside, which we'll get to below — is that the propeller guards increase the weight of the drone. The propeller guards take the A1 from the coveted 249g weight, to 351g, meaning the A1 becomes slightly more restricted when this accessory is used.
Antigravity A1 Follow Me Bundle: key specsCamera:
Dual 1/1.28-inch sensors
Video resolution:
Up to 8K
Frame rates:
8K up to 30fps / 5.2K up to 60fps / 4K & 1080p up to 30fps / 4K & 1080p slow motion at 100fps
Video transmission range:
Up to 6.2 miles / 10km (Tested in FCC environments)
Flight modes:
Manual Mode, Deep Track, Orbit Follow, Cycling Track, Ski Track, Fly Away, Antigravity Line, Ascend, Oval Orbit, Spiral Ascent, Arc Shot, Arc Out
Battery:
2360mAh, up to 24 minutes flight time / 4345mAh, up to 39 minutes flight time
Charger type:
USB-C / Battery Charging Hub
Weight:
12.04oz / 351g
Dimensions:
Folded: 5.56 x 3.79 x 3.20 inches / 141.3 x 96.2 x 81.4mm
Unfolded (propellers extended): 12.15 x 15.05 x 3.51 inches / 308.6 x 382.3 x 89.2mm
The Antigravity A1 Follow Me Bundle is available in two kits: one that includes the Antigravity A1 drone and another that’s just the follow accessories for existing A1 owners. The Follow Me Bundle includes the Watch Remote, Ring Remote, Propeller Guards, Lens Guards, a USB-C cable and a Cross Body Bag. This costs $340 / £309 / AU$539, while the kit with all this and the A1 drone, alongside other drone accessories, costs $799 / £639 / AU$1159. The Propeller Guards can also be purchased separately, and these cost $40 / £32 / AU$70.
This is quite expensive when you consider the fact that the DJI Neo 2 only costs $259 / £209 / AU$409 for the basic kit. Sure, if you’ve already got an Antigravity drone, the new Accessory Bundle, including just the accessories, expands the functionality of what you have, but the DJI Neo 2 is smaller, lighter and can be controlled in several different ways. The main and obvious advantage of the Antigravity A1 Follow Me Bundle is the fact that you can capture 360-degree video, which you can’t do with the DJI Neo 2.
One thing that I would like to see with the Antigravity A1, and this could also be released as a kit and standalone accessory purchase, is a standard drone controller; one that allows you to fly the drone without the need for the FPV goggles and Motion Controller, or even the Watch and Ring Remotes. This would make flying even easier and more convenient – simply opening up yet another way to fly the A1. Anyhow, let’s get back to the Follow Me Bundle.
Antigravity A1 Follow Me Bundle: Also considerDJI Neo 2
The DJI Neo 2 allows you to capture effortless aerial selfies thanks to its intelligent subject tracking that automatically follows you. Gesture controls let you operate the drone hands-free. The drone is lightweight and compact, and although it’s not a 360-degree drone, it offers fantastic subject tracking and selfie modes in an affordable package with several control options available.
Read our DJI Neo 2 review
DJI Avata 360
The DJI Avata 360 is excellent for capturing 360-degree photos and videos. Its intelligent subject-tracking features, including ActiveTrack 360°, make it easy to follow moving subjects automatically, while Spotlight modes provide additional creative control. These are more basic in some ways than the Antigravity A1 Follow Me Bundle, but it’s the only other 360-degree drone available, and it offers some subject tracking functionality off the shelf.
Read our DJI Avata 360 review
Should I buy the Antigravity A1 Follow Me Bundle? (Image credit: James Abbott)Buy it if...You want subject tracking capabilities on a 360-degree drone
The subject tracking capabilities of the Follow Me Bundle are impressive, to say the least. Plus, you can shoot up to 8K 360-degree footage.
You already own an A1
If you already own an Antigravity A1 and would rather expand its functionality rather than buying another drone, the accessory bundle is for you.
Don't buy it if...You’re on a tight budget
Whether or not you already own an Antigravity A1, the basic DJI Neo 2 kit is less expensive than the Follow Me Bundles and offers similar flight functionality.
You don’t need or want 360-degree tracking
This is a no-brainer, but if you don’t need or want subject tracking and selfie functionality in a 360-degree drone, this is not the kit for you.
How I tested the Antigravity A1 Follow Me BundleThe Antigravity A1 Follow Me Bundle was tested over several weeks, tracking myself skateboarding, cycling and running. I also tested the one-click cinematic shots while standing to show how these look with focus on the subject.
To put the subject tracking through its paces, I chose to walk, skate and cycle under and around trees to see how the drone’s collision avoidance coped, alongside how the GNSS tracking on the Watch Remote performed.
All video footage was reframed as simply as possible, with focus on the subject maintained with a ‘normal’ field of view. I chose not to use any special effects to make the capabilities of the tracking modes apparent.
First reviewed October 2026
I’ve been using a selection of Oppo phones as my daily drivers for the last two years, and in that time, I’ve always gravitated towards the higher end of the lineup. I’ve stood by my habit of choosing the ‘pro’ option where possible for several reasons — such as wanting a high-quality camera system, long battery life, a great screen, and powerful internals — but Oppo’s new baseline flagship throws that all into question.
Put simply, the Oppo Find X10 feels like a ‘pro’ phone. It blazes through multitasking, gaming, and productivity tasks. It lasts for ages thanks to an iPad-sized battery. Its three rear cameras are some of the clearest and sharpest I’ve used on a smartphone. And its mid-sized display feels bigger than it is thanks to razor-thin bezels and a super-sharp resolution.
However, the Oppo Find X10 also comes with a pro-grade price tag. While last year’s Oppo Find X9 launched at £899 / AU$1,799 (it wasn't available in the US), the Find X10 hikes that number up to £1,099 (AU$ TBC) — the same price as the Oppo Find X9 Pro.
Really, then, it makes more sense to see the Find X10 as the successor to the Find X9 Pro. This year’s actual step-up model, the Oppo Find X10 Pro Max, is in a different class altogether, with three 200MP cameras and a ludicrous £1,499 launch price.
Still, as you might expect from such an expensive handset, the Oppo Find X10 punches above its weight class as a standard flagship. Though we’ve seen other Android manufacturers like Samsung and Google release phones with triple-camera systems and fast internal components, Oppo’s latest offering has some seriously impressive specs up its sleeve, and it's a strong contender for future inclusion in TechRadar's best Android phone and best camera phone guides.
As well as the aforementioned battery — a monstrously huge 7,150mAh cell (or an even bigger 8,000mAh cell in APAC regions) — the phone comes locked and loaded with two 200MP camera sensors, one of the cleanest Android wrappers in the game, and a thin and light design that takes more than a little inspiration from Apple.
Indeed, the Find X10 makes it clearer than ever that Oppo has no plans of slowing its roll when it comes to taking, ahem, inspiration from the design and engineering teams over in Cupertino. I'll leave you to decide whether that's a help or a hindrance; the phone itself works marvelously, but it’s hardly the most original product on the market. With that said, if you’re someone who absolutely must use Android, but like the look and feel of the best iPhones, the Find X10 is about as close as you can get while keeping a hold of Google’s mobile OS.
Across the industry, phones aren’t getting any cheaper — the standard iPhone 17 is approaching the launch price of the iPhone 15 Pro, and Android phone makers are jacking prices across the board — and Oppo's latest flagships are no exception.
At £1,099, the Oppo Find X10 is very expensive for a supposed base-model flagship, but, to be real, this is a pro-level flagship in disguise. Thanks to its excellent cameras and solid performance, its standard-sounding name is not a facade that holds for long; a pro by any other name still feels as complete.
Oppo Find X10 Pro review: Price and availability(Image credit: Jamie Richards / Future)The Oppo Find X10 costs £1,099 — exactly the same as last year’s Find X9 Pro at launch and £200 more than the standard Find X9. That might sound like a mighty price hike at first, but the truth is that the Find X10 is more obviously a follow-up to the Find X9 Pro than the standard Find X9, and makes a case for its price point with some properly pro-grade features.
The Find X10 comes in one configuration: 12GB of RAM with 256GB of storage. That is, annoyingly, less RAM and storage space than last year’s Find X9 Pro, which came with 16GB of RAM and 512GB of storage. But with rising prices across the industry and still-excellent performance (as I'll discuss below), the Find X10 is hardly the worst offender on the market when it comes to changes in value proposition.
If you buy the phone directly from Oppo, you get your choice of the Hasselblad Teleconverter Kit or Oppo Watch X3 at no extra cost. Personally, I’d recommend the teleconverter kit — I didn’t get to test it with the Find X10, but having used last year’s version with the Find X9 Pro, I’d recommend it for any keen mobile photographers.
One thing I do appreciate about Oppo is that everything you need to get started with your phone comes in the box. As well as the phone itself, my Find X10 review unit came with an 80W SuperVOOC charger and a color-matched silicone case. Considering how expensive high-power chargers can be, that’s a decent value-add.
Check out the table below for a quick overview of the Oppo Find X10's specs, or keep scrolling for detailed breakdowns of each feature.
Dimensions:
156.51 × 74.29 × 8.35mm
Weight:
216g
Display:
6.59-inch AMOLED
Resolution:
2768 x 1272 pixels
Refresh rate:
1-120Hz adaptive, boosted to 144Hz in certain games
Chipset:
MediaTek Dimensity 9500
Rear cameras:
200MP main + 50MP ultra-wide + 200MP telephoto (2.8x)
Front camera:
50MP
Storage:
256GB
RAM:
12GB
OS (at launch):
Android 17 w/ ColorOS 17
Battery:
8,000mAh (APAC) / 7,150mAh (EU)
Charging:
80W wired, 50W wireless
Oppo Find X10 review: Design(Image credit: Jamie Richards / Future)There’s no getting around the fact that the Oppo Find X10 looks like an iPhone 17 Pro (or indeed an iPhone 18 Pro). Its aluminum frame, glass rear panel, and raised camera plateau housing a trio of rear cameras make this the most iPhone-like Oppo phone ever released — somehow, it looks even more Apple-esque than last year’s Find X9 Pro, and given the brand’s history with taking inspiration from Cupertino, that’s really saying something.
However, despite its lack of originality, I am a fan of the Find X10’s design. In typical Oppo style, the phone feels both tanky and elegant. I wasn’t concerned about it taking knocks in my pocket or at the bottom of a backpack, but I also found myself stopping to appreciate the refinement and precision in its construction. Funnily enough, that familiar-looking camera plateau is perhaps the best example of Oppo's attention to detail; it rises from a rear panel made of a single piece of glass.
It helps, too, that the Find X10 comes with some protective kit in the box — you get a color-matched silicone case at no extra charge, and the phone comes with a glass screen protector pre-installed. The phone has also been separately rated at IP66, IP68, and IP69, meaning it can take a dip in shallow fresh water without any fuss (that’s a safety net, not an invitation).
My review unit came in the Glacier Blue colorway, which is rather nice, and the phone also comes in the stylishly loud Glow Coral (read: pink) and understated Mist Grey (read: grey) color options for those who want something more or less noticeable.
In the interface department, the Find X10 comes equipped with the standard power button and volume rocker as well as the Snap Key, Oppo’s take on Apple’s Action Button. By default, it’s set to activate Mind Space (more on that in the Software section), but I tend to set it as a camera shortcut or handy flashlight button.
The USB-C port uses a USB 3.2 Gen 1 connector, meaning file transfers zip by at a speedy 10 Gbps, and the main speaker alongside it is one of the best I’ve heard on any phone, with plenty of bass and depth to the sound.
I’m a large guy who likes large phones, and as such, I’ve spent the last few years daily driving the biggest phone I could get my oversized mitts on. With that said, I’ve found myself really enjoying the Find X10’s slightly smaller screen. 'Slightly' is the operative word here — at 6.59 diagonal inches, the phone isn’t much smaller than the 6.78-inch screen shared by the Find X10 Pro Max and last year’s Find X9 Pro, but it’s still a noticeable, and I dare say welcome, change.
Perhaps I shouldn’t be so surprised. Oppo has long proved itself as a maker of truly excellent displays, and the Find X10 is no different. With a resolution of 2768 x 1272 and pixel density of 460 pixels per inch, the screen on the Find X10 is even sharper than that of its bigger sibling, the Find X10 Pro Max. Oppo claims 800 nits of typical brightness, rising to 2,000 nits in high brightness mode and 3,600 nits peak for HDR content. In daily use, brightness wasn’t really a concern — the display was always legible and colorful, both indoors and outside, and with such a huge battery under the hood, I was content to let auto-brightness just do its thing.
The display also sports razor-thin bezels that measure a uniform 1.15mm around its entire edge. In practical use, they’re basically unnoticeable, which helps the slightly smaller display feel as immersive as a larger premium flagship. An adaptive 1-120Hz refresh rate keeps things feeling smooth in motion, while certain games can bump that figure up to 144Hz.
As usual, you get a choice of color profiles in the settings app — I like the ‘vivid’ look for its richer, poppier colors, though there are warmer, cooler, or more muted options to match other tastes. As is now typical for high-end phones, the Find X10's display uses an OLED panel to deliver deep blacks and excellent contrast, and I found it perfect for watching videos, playing games, and everyday browsing alike.
The Find X10 makes its strongest case for a high price tag with its camera system.
With two 200MP sensors powering the main and telephoto cameras, respectively, as well as 50MP ultra-wide and selfie cameras, the Find X10 is a performant and reliable camera phone that excels at taking detailed snaps in a variety of lighting conditions.
I was impressed by just how sharp and colorful photos looked, and Oppo seems to have toned down the AI-flavored image signal processing common to its last generation of phones.
The name of the game here is consistency — no matter which lens you pick for your shot, Oppo’s hardware and software teams have clearly worked together to make the photography experience feel reliable, with similar colors, detail, and sharpness offered across the three cameras. The best synergy comes between the main and 2.8x telephoto cameras, both of which have a 200MP sensor at 1/1.4-inches and 1/1.56 inches, respectively. Both take excellent photos and offer superb detail in low light, and while neither can work miracles in pure darkness, the automatic long-exposure feature can garner impressive results.
The ultra-wide camera is smaller, with a 1/2.75-inch 50MP sensor, but it still performs well in bright situations, and serviceably in darker climes.
As standard, the Find X10 bins photos to 26MP JPEGs, but you also have the option to shoot JPEG-XL or RAW files at native resolution. The huge telephoto resolution means the Find X10 can take losslessly cropped 12MP photos at 12.4x zoom. The optional Hasselblad Teleconverter kit affixes a zoom lens to the telephoto camera, increasing the base zoom to 10x — alas, I didn’t get to test it with my review unit, but it’s worth mentioning that buying the phone from Oppo directly gives you the option of getting the kit or an Oppo Watch X3 at no extra cost.
(Image credit: Jamie Richards / Future)I do, however, miss the Quick Button (Oppo’s version of the iPhone’s Camera Control) introduced with the Find X8 Pro and carried over to the Find X9 Pro. I appreciate that opinions on smartphone shutter buttons are mixed — I’ve got plenty of friends who never touch them, and TechRadar's Phones Editor, Axel Metz, has debated their value with me on more than one occasion — but I personally used the Quick Button almost every time I took a photo with the Find X9 Pro, and I loved swiping across it to access that high-quality telephoto lens.
That said, the Quick Button’s absence on the Find X10 isn’t a dealbreaker by any means, as the camera app is still one of the smoothest and best-featured I’ve used on any phone. The handset’s smaller frame also makes it easy to grab for quick snaps and videos.
Oppo Find X10 Camera SamplesJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureUltra-wide lensJamie Richards / FutureMain lensJamie Richards / Future2.8x lensJamie Richards / Future5.6x lossless 12MP cropJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureJamie Richards / FutureNo long-exposureJamie Richards / FutureWith long-exposureJamie Richards / FutureIn low light, the Find X10's AI-tinged post-processing is a bit more noticeableJamie Richards / FutureJamie Richards / FutureColorOS 17, Oppo’s take on Android 17, remains one of my favorite Android wrappers; it’s fast, fluid, well animated, and aesthetically clean. It’s also a clear and shameless dupe of iOS 27, right down to the Control Center-esque menus and Liquid Glass-like transparency effects. If you’re a die-hard Android user who just happens to like the look and feel of Apple phones, it’s a genuinely fantastic option, but those who want something a little more original should look elsewhere.
Debates around originality aside, I can’t overstate how much I enjoy using ColorOS. Its UI strikes the best balance between fluidity and stability of any mobile OS I’ve used. Oppo continues to use parallel animation processing, which runs each UI animation as its own task independent of other on-screen motion, and makes getting to the apps and content you need to access effortlessly fast.
Finally, ColorOS knows when to stay out of the way and when to suggest useful features like Smart Sidebar, which adds a floating dock for apps and files. It’s an impressive bit of software.
Less impressive is Oppo’s continued insistence on shipping incredibly expensive phones loaded with bloatware. On setup, I found my Find X10 review unit stuffed with apps I don’t and won’t use — TEMU, ChatGPT, BIGO LIVE, and Booking.com, among others. It is fundamentally unacceptable to ship a phone at £1,099 while patronizing users by pre-installing this nonsense, and Oppo needs to cut it out immediately.
The Find X10 also offers a few neat features for AI fans. The Snap Key on the left side of the phone is set by default to trigger Mind Space, which is sort of like a self-organizing junk drawer for your digital bits and bobs. Screenshots, notes, and reminders all end up here, processed and categorized into a searchable database. And as an upper-tier Android, the Find X10 is absolutely riddled with Gemini and first-party Oppo AI features like Circle to Search, image generation tools, and audio transcription.
Looking only at benchmarks, the Oppo Find X10 is a reasonable performer that runs in the middle of the pack for its price range, neither lagging behind nor pulling ahead.
As a daily driver, though, I found the Find X10 to be a perfect performer in all kinds of everyday scenarios. I suspect Oppo has optimized the heck out of this thing, as I just couldn’t get it to slow down, no matter how many apps I left open or how high I cranked the graphics settings on Call of Duty: Mobile.
The Find X10 comes with a MediaTek 9600M chipset and 12GB of RAM, both of which are fine for a phone in this price point. The iPhone 18 Pro and Samsung Galaxy S26 Ultra, respectively, have the A20 Pro and Snapdragon 8 Gen 5 Elite chipsets, which are a bit faster, and many of the best phones give you 16GB of RAM for smoother multitasking and on-device AI. But as mentioned, I couldn’t get the Find X10 to stutter in my varied usage, so I’m not really concerned.
I did run some benchmarks to see what the Find X10’s internal hardware is capable of. Geekbench 7 returned a single-core score of 2466 and a multi-core score of 7759, while Geekbench AI gave a quantized score of 3119. This is on track with previous- and current-gen flagships from Samsung and Apple, and a fair bit ahead of Google — but at this price point, power users might want a little more oomph.
Still, I was always happy with the Find X10 in daily use. It nails the basics, with clear calls and phenomenal haptics, while delivering enough power for all but the most demanding users.
Oppo has long been a leader in the global phone market when it comes to battery life, and the Find X10 offers a serious upgrade over last year’s models… as long as you live in the Asia-Pacific region.
You see, the Find X10 comes in two regional variants: one for the aforementioned APAC region and one for the EU and the rest of the world. The former gets an 8,000mAh battery, up from the Find X9 Pro’s 7,500mAh cell, while the EU version sees a downgrade to 7,150mAh.
My review unit came with the larger 8,000mAh cell, so I can only speak to how well this version’s battery performs — and as you’d expect from a phone with a larger battery than a base-model iPad, it is truly excellent. I found it almost impossible to kill the Find X10 in a single day. I could easily get a day and a half or two days of use on a single full charge, and with cautious use, I reckon three days would be possible.
Again, I haven’t used the 7,150mAh version of the Find X10, but this is still larger than any battery an Apple, Samsung, or Google phone can offer, so expect great battery life at a minimum.
These fantastic results are due to Oppo’s use of silicon-carbon batteries, a technology the brand has long championed and continues to push forward. Silicon-carbon isn’t without its controversies, and some commentators doubt its long-term durability versus the typical lithium-ion batteries you’ll find in the best iPhones and many of the best Android phones — but for those who want all-day battery life with plenty of power to spare, the benefits are obvious.
When it comes to charging, the Find X10 benefits from Oppo’s proprietary SuperVOOC charging tech, with support for up to 80W wired charging or 50W wireless charging. The bundled wired charger hits that 80W mark, and charging is therefore relatively speedy; the sheer size of the Find X10’s battery means this isn’t the fastest-charging phone on the market, but its heft also means that a charge to 50% goes further than it would with Western competitors. It took me around 1:15h to charge from empty to full.
Attributes
Notes
Rating
Value
The Oppo Find X10 isn't cheap by any means. It's certainly a lot of phone, but the era of Oppo undercutting the competition is over.
3 / 5
Design
Undeniably beautiful, but completely indebted to Apple's design language. Sturdy with great color options.
4 / 5
Display
The Find X10 is a little smaller than its Pro Max sibling, but still feels immersive thanks to a sharp resolution, vivid colors, and thin bezels.
5 / 5
Software
One of the best deployments of Android, inexcusably marred by the presence of bloatware. Once you clear the crap, it's terrific.
3 / 5
Camera
A truly superb camera system with subtler post-processing than prior generations. The 200MP main and telephoto cameras are class-leading.
5 / 5
Performance
The Find X10 runs with the pack performance-wise. It's what we'd expect to see from a phone of this price.
4 / 5
Battery
Truly ludicrous battery life meets phenomenally quick charging. A battery champ by any measure.
5 / 5
Buy it ifYou want a great camera phone
With three powerful cameras and superbly balanced post-processing, the Find X10 is a reliable pick for photos and videos. Lossless crops up to 12.6x and 200MP main and telephoto cameras make this one of the best camera phones I've used.View Deal
You want fantastic battery life
Whichever regional variant of the Find X10 you get, its battery is one of the largest in any smartphone. Add in rapid charging from the bundled wired charger and you’re unlikely to ever see it power down.View Deal
You want Apple-like looks with Android power
Originality isn’t Oppo’s strong suit, but if you’re a committed Googler who enjoys the simplicity and subtlety of Apple’s aesthetics, ColorOS is a solid alternative that runs smoothly in all kinds of scenarios.View Deal
Don't buy it ifYou’re on a budget
Though prices have risen across the industry, the Find X10 is still both relatively and absolutely expensive — £1,099 is a lot of money, close to the price of an older phone plus a tablet or an entry-level laptop.View Deal
You hate bloatware
Oppo, if you’re reading this, I’m never going to let you off the hook for shoving bloatware nonsense onto a four-figure phone. Yes, these apps can be removed, but if you’re the type of person who likes a clean setup experience, the random apps and recommendations built into the Find X10 could be a serious turnoff.View Deal
Also considerGoogle Pixel 11
If you want a fast and flexible Android phone that keeps the simple things simple while pushing new software and AI tools, the Google Pixel 11 gets you access to the latest Google features before anyone else while still sporting a triple-camera setup and modern design.
Read our hands-on Google Pixel 11 review
iPhone 18 Pro
The Oppo Find X10 looks and feels like an iPhone, but for some users, only the real thing will do. The iPhone 18 Pro is smaller than the Find X10, with lower-res cameras and a smaller battery, but it does give you access to Apple’s ecosystem and still has its Camera Control shutter button.
Read our full iPhone 18 Pro and iPhone 18 Pro Max review
OnePlus 15
With the OnePlus 16 stuck in China for now, the latest globally available flagship from Oppo’s sister brand remains the OnePlus 15. No complaints from us, though — the OnePlus 15 still reigns as the best Android phone in our rankings, thanks to its huge battery, excellent cameras, and large, high-resolution display.
Read our full OnePlus 15 review
How I tested the Oppo Find X10Why 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 used the Oppo Find X10 in a variety of everyday and test situations for this review. I used it as a daily driver for calls, texts, and social media, took it on dedicated photo walks, played games, and ran benchmarks to stress-test the CPU and AI abilities. I left as many apps open as I could to see how it held up to multitasking, and monitored battery life over the course of days and nights out.
I then applied my experience reviewing phones and journalistic training to provide an assessment of the phone's capabilities and value offering.
First tested October 2026
The Oppo Find X9 Pro was my favorite phone of 2025, so of course, I had extremely high hopes for the X10 series. Interestingly, Oppo hasn't released an X10 Pro in 2026 — instead, there's just an Oppo Find X10 and an X10 Pro Max.
The Pro Max isn't larger than last year's Pro, but it is larger than the X10. If I had to hazard a guess as to why the name has changed, I reckon the RAM shortage-induced price hike might have something to do with it.
That aside, the Find X10 Pro Max does not disappoint. The star of the show is the new camera system, which now features three large 200MP sensors on the rear. The new model also gets a chip upgrade, a larger battery (in some regions), and a faster, professionally calibrated display.
After using this phone for about three weeks, I find myself with almost no complaints. It's super fast, the software is superb, battery life is excellent (I have the larger-capacity version), and the cameras are some of the best on the market.
Honestly, the Find X10 Pro Max's cameras are so impressive that there's a case to be made for picking up this device over a compact point-and-shoot or a vlogging camera. The fact that it's also a phone only sweetens the deal. As a content creator who likes to travel light, it's a dream come true.
@techradar ♬ Uncasually - BonoboWhat sets the X10 Pro Max's cameras apart is that you can use any lens in any situation without compromising quality. They all share the same 200MP resolution, and they're all at least 1/1.56-inch sensors, so they handle low-light conditions well. The same goes for video, where each lens can capture at up to 8K/30fps or 4K/120fps, and each supports open-gate capture, Log recording, and Dolby Vision. Even the selfie camera is impressive, offering a super-wide field-of-view and reliable autofocus.
Cameras aside, everything else about the Find X10 Pro Max is great, too. Its display is bright and speedy, its software is among the best around, and it games like a champ.
The only real sticking point is the price (spoiler: it's very, very expensive), but if you can stomach the cost, the Find X10 Pro Max is an extremely easy recommendation.
Oppo Find X10 Pro Max review: Price and availability(Image credit: Future)The globally available version of the Oppo Find X10 Pro Max only comes in one configuration: 12GB of RAM with 512GB of storage.
As ever, it won't launch in the US, but everywhere else, it'll cost you a pretty penny; the Find X10 Pro Max starts at an eye-watering £1,499 in the UK.
Of course, we have the component shortage going on, so a feature-packed flagship like this was never going to be cheap, and this is a higher price point than most were expecting. Still, the Find X9 Pro launched at £1,099 in the UK, so if you see the Find X10 Pro Max as its successor (which I do), that's a £400 price hike.
That said, the 512GB iPhone 18 Pro Max also costs £1,499, and the 512GB Samsung Galaxy S26 Ultra costs even more. Meanwhile, the Find X10 Pro Max's spec sheet is in a completely different league, so perhaps this isn't such an outlandish sum after all.
If you're in the UK, there are some tempting introductory deals to help soften the blow. For a limited time, Oppo is offering £100 off the Find X10 Pro Max, plus you can grab a free accessory worth £500. Options include the Hasselblad Teleconverter kit, Oppo Watch X3, or Oppo Pad 5. Other regions will likely have similar offers.
Here’s a look at the Oppo Find X10 Pro Max’s key specs:
Oppo Find X10 Pro Max
Dimensions
161.32 × 76.57 × 8.40mm
Weight
226g
OS
Color OS 17, based on Android 17
Display
6.78-inch OLED, 144Hz
Resolution
2772 × 1272 pixels
Chipset
MediaTek Dimensity 9600 Pro
RAM
12GB
Storage
512GB
Battery
7,150mAh (Europe) / 8,000mAh (APAC)
Rear cameras
200MP (f/1.5) main, 200MP (f/2.2) ultra-wide, 200MP 3x telephoto (f/2.1)
Front camera
50MP (f/2)
Oppo Find X10 Pro Max review: Design(Image credit: Future)When I first saw the design of the Find X10 Pro Max, I wasn't quite convinced, but it has grown on me over time. It shares some DNA with the Find X9 series, but the camera bump has grown larger, and the lenses are now covered by a single dark pane of glass.
The Find X9 Pro was already a little iPhone-inspired, but that's perhaps even more noticeable with the Titanium Grey X10 Pro Max, which has a raised platform spanning most of the upper rear panel — just like the iPhone 17 Pro and iPhone 18 Pro.
The Luna White model (which is the one I have) looks a little more unique. It has a two-tone rear panel, while the camera island and the module containing the flash and color sensor are completely separated, with no platform underneath.
(Image credit: Future)It's a little quirky, but it's nothing too outlandish, and I've grown to like it a lot. Crucially, having the cameras shoved up in the corner (rather than being in a central circle like on the Vivo X500 Pro Max) means that this phone works really well with MagSafe accessories. And while we still don't get magnets built into the Find X10 Pro Max itself, almost all of Oppo's official cases come with magnets.
Oppo has ditched the somewhat controversial Camera Control clone, but it kept the Action Button (which Oppo calls the Snap Key). It's not a popular stance, but I actually quite liked the Camera Control, and I'll miss it, but I'm very aware that I'm in the minority there.
The Snap Key is great, too, but Oppo's implementation is on the basic side. It can be assigned to access a number of features, like the flashlight, translation, camera, and Mind Space, but you still can't choose your own app. There are also no options for double- or triple-press actions, as we've seen from some competitors.
Otherwise, the Oppo Find X10 Pro Max has the typical flagship look and feel. You get flat aluminum side rails, and a flat front and rear made from Oppo's own Crystal Guard Glass (co-developed with Corning). It's a sizable phone with a bit of heft to it, but I'm used to that, and I felt immediately at home when picking it up for the first time.
FutureFutureFutureFutureIt's hard to speak much about the durability, as I haven't tortured my device much, but on paper, the Find X10 Pro Max should handle the elements well. It's IP69 rated for dust and water resistance, and it has an SGS Five Star Drop Resistance Certification, too.
The phone comes with a basic opaque white TPU case in the box, a factory-installed screen protector, a charger, and a USB-C Cable — although I expect the charger inclusion might differ from region to region.
The display on the Find X10 Pro Max is nothing short of excellent. It has super-slim symmetrical bezels that measure just 1.15mm on each side. That's the same size as the bezels on the Find X9 Pro, but it's just as impressive to see such thinness the second time around.
What is new on the Find X10 Pro Max is the refresh rate. It can dynamically adjust between 1 and 144Hz as required. Oppo admits that only a few games will take advantage of the full 144Hz, like COD: Mobile, PUBG, and Free Fire, and you won't see such high refresh rates outside of those titles. Still, if you play those, it's a great perk.
As for brightness, it peaks at 3,600 nits, just like last year's model. In my experience, that's more than enough for just about any situation. What I find even more useful is the fact that it can dim down to 1nit for late-night scrolling without melting your eyeballs.
(Image credit: Future)On the topic of eye health, the Oppo Find X10 Pro Max supports 3,840Hz high-frequency PWM dimming to prevent screen flicker at lower brightness levels. Above 70Hz, it'll switch to full DC dimming. If you're sensitive to flicker, you'll really appreciate this feature.
One thing that's pretty unique to the X10 Pro Max is that the screen is professionally calibrated and covers 95% of the BT.2020 wide color space — that's 40% more color coverage than most phone screens, which usually target DCI-P3 instead.
As a result, while the image might not look as vibrant or poppy as some competitors, you can be assured that the colors displayed are accurate. That makes a lot of sense on a content-creation powerhouse such as the Find X10 Pro Max, and I appreciate it.
The Oppo Find X10 Pro Max takes a fresh, zero-compromise approach to the camera system. All three rear cameras have a 200MP resolution, and they all have large sensors, too.
Usually, you have a primary camera that's the best of the bunch, while the telephoto and ultra-wide come with compromises — I wouldn't recommend shooting low-light photos with most ultra-wide cameras, or with that tiny 3x telephoto on the Samsung Galaxy S26 Ultra, for instance.
With the Find X10 Pro Max, you don't need to worry about compromises; just pick the right focal length for the scene and snap away. It reminds me of the Vivo X300 Ultra (which has even larger sensors on all three rear cameras), but even that beast makes a compromise with the ultra-wide's resolution.
The Find X10 Pro Max's selfie camera shares most of its specifications with that of last year's X9 Pro, but it has a wider field of view (similar to the ultra-wide on the back), so it's much better for group photos. Reliable autofocus helps in that regard, too. Of course, if you want a normal selfie, the camera UI lets you crop in to a standard FOV.
Oppo Find X10 Pro Max main camera in Master Mode (Image credit: Future)The Oppo Find X9 Ultra has been my favorite phone for photography since launch, and the Find X10 Pro Max shares a lot of the same DNA. The pro-focused Master Mode is what truly stole my heart, and thankfully, Oppo is extending that joy elsewhere.
The standard photo mode now uses the same tone mapping as Master Mode, and the sharpening and noise reduction have been dialled back a little, too. It's still a very different look to Master Mode — it's still sharpened much more heavily, and the HDR effect is more pronounced — but it's much more natural than before, and I think it's a change for the better.
The picture styles have been reworked on the Find X10 Pro Max, too. They're available in most modes, and they're all extremely customizable, with their own tone pad (like on the latest iPhones) as well as individual adjustment sliders. Primrose is my favorite, which simulates the look of Portra film stock, but there are plenty of other excellent options, too.
Taken on the Oppo Find X10 Pro Max with its external lens (Image credit: Future)To summarize my experience with photography, the Oppo Find X10 Pro Max is unquestionably among the best camera phones, regardless of lighting conditions. The X9 Ultra is really the only phone that beats it. The Ultra still has the edge with long-range zoom and low-light capture, unless we're talking about the ultra-wide camera, in which case the Pro Max easily comes out on top.
Now, photography is only one part of the puzzle, because Oppo put a lot of effort into this phone's video capabilities, too. Again, consistency is the name of the game here.
All three rear lenses can shoot up to 8K/30fps or 4K/120fps, and they all support open-gate capture at up to 60fps. The same goes for Log recording and Dolby Vision. Just use whatever focal length feels right for the occasion, because they can all do everything.
The Find X10 Pro Max is a seriously capable video-making tool. Solid stabilization and microphone performance add to the appeal, too. If you make YouTube content using your phone, this device should definitely be on your shortlist.
Oppo Find X10 Pro Max teleconverterFutureFutureIf all that wasn't enough, Oppo also has an external (10x equivalent) teleconverter kit for the Find X10 Pro Max, so you can push the zoom even further, or use it on closer subjects for DSLR-like compression and bokeh. There's also a full-on video rig developed with Tilta, if you want to fully transform this phone into a video workhorse.
The Oppo Find X10 Pro Max is powered by MediaTek's latest flagship chip, the Dimensity 9600 Pro. In most situations, it beats the Snapdragon 8 Elite Gen 5 on performance and efficiency, and it trades blows with the new 8 Elite Extreme Gen 6, too.
For the globally released version, the Find X10 Pro Max only comes in one configuration: 12GB of RAM and 512GB of storage. That's less RAM than last year, and of course, we have the data centre-driven shortage to thank for that. Still, these capacities are more than sufficient for my needs — the Find X10 Pro Max never skipped a beat, even under heavy multitasking pressure.
It won't be surprising to hear that the Find X10 Pro Max feels incredibly quick, no matter what you ask of it. You have to boot up a seriously demanding game to get the phone to break a sweat.
(Image credit: Future)For this purpose, I put a few hours into Neverness to Everness, which has a detailed urban open-world map that makes some phones chug. The Find X10 Pro Max, though, can run it at 60fps on the highest graphics preset without issue.
The phone's frame does get fairly hot after a while, but the performance seems steady enough. In reality, that just means the cooling system is doing its job, drawing heat away from the chip. If you use a case or a gaming grip, it won't bother you in the slightest.
Gamers will have a great time with the Find X10 Pro Max, and other phones are unlikely to come close to the performance limits of this hardware. It's great.
The Oppo Find X10 Pro Max runs ColorOS 17, Oppo's take on Android 17. I have become a big fan of this operating system over the past couple of years, and it's a big part of the reason that I daily-drive an Oppo phone.
The latest version doesn't stray too far from the winning formula, but it has been spruced up a bit. The animations have been refined with some extra elasticity that makes interactions feel even more natural. Plus, there are subtle new glowing touches that appear over the Liquid Glass-esque quick settings and notification shades. It's not a dramatic change, but it's an extra bit of polish that you'll notice.
There's a lot of Apple influence in the styling, but I'm fine with that. Apple has always been strong in the design department, and while Oppo's approach isn't too novel, it does look great. Plus, if there's anything you don't like in ColorOS, it's all very easy to customize.
Oppo has been putting a lot of effort into making its software feel smooth, and the OS now apparently uses up to 25% less RAM than previous versions. Apps should open slightly faster, and Oppo says its software should maintain this smooth operation even when your storage fills up — but I haven't come close to doing that just yet.
FutureFutureFutureOf course, there are loads of AI tools built into the Find X10 Pro Max. There's plenty that we've already seen, like Mind Space, which organizes your screenshots into searchable collections with AI summaries, and there are some new additions, too.
For instance, there's a new tool called AI Photo Agent, which lets you edit your pictures using natural language prompts. Plus, it can give suggestions for edits that might look good, or attempt to recreate the style of another image.
As with anything involving AI, the results can be a bit of a mixed bag, but on occasion, AI Photo Agent works really well. You can do anything you can dream up, from subtle color adjustments to background replacement, subject removal, subject addition — you name it, AI Photo Agent can do it.
(Image credit: Future)There's also something called AI Mind Pilot, which is designed for AI super freaks. It pulls models from Gemini, Perplexity, and OpenAI all into one app, so you can ask the same question to a chorus of chatbots, or switch between them as you see fit.
Mind Pilot was already available on the X9 Ultra, but this version now has more agentic capabilities. The AI can find files and photos from around your phone, move them, rename them, or even create something with them, like a presentation or a collage.
The battery situation with the Find X10 Pro Max is a little complicated. If you live in Asia, Australia, or the Middle East, you'll get a mammoth 8,000mAh battery pack. Meanwhile, in Europe, shipping regulations mean that you'll only get a 7,150mAh-capacity cell.
There's nothing unusual about that, except for the fact that I have the 8,000mAh version of the Find X10 Pro Max, despite living in the UK. This means that any of my observations about battery life only apply to the APAC version of the phone. Relevant to some of you, less relevant to others.
Unsurprisingly, with an 8,000mAh pack inside, the Find X10 Pro Max's battery life has been excellent. I'm consistently getting at least a day and a half of use per charge, despite lots of camera use and gaming. Two days on a charge is easily achievable, too.
Charging is also pretty quick. You'll get up to 80W speeds with the official adapter or 55W with third-party USB-PD chargers. It'll still take well over an hour to charge from completely flat to full, but that's understandable with such a large capacity.
Attributes
Notes
Rating
Value
The Find X10 Pro Max is expensive, especially compared to its predecessor. It's now roughly the same price as the iPhone 18 Pro Max and S26 Ultra. It's not a bargain, but it's not a rip-off, either.
3 / 5
Design
The Oppo Find X10 Pro Max manages to look unique without being outlandish. Meanwhile, IP69 protection and quality materials mean it should last long-term.
4 / 5
Display
Super-slim bezels, a speedy refresh rate, and a bright output make this screen a delight to live with.
5 / 5
Cameras
No other camera system is as balanced as this. Large 200MP sensors on every camera make for unmatched versatility.
5 / 5
Performance
This phone games like the best of them. The slight RAM downgrade is a shame, though.
4 / 5
Software
ColorOS is smooth, good-looking, and feature-packed. Software support terms don't match the best in the biz, though.
4 / 5
Battery
My battery life has been exceptional; however, I have the larger 8,000mAh version. It's a shame that the EU gets a downgrade.
4 / 5
Buy it if...You want a no-compromise camera beast
The Oppo Find X10 Pro Max has one of the best camera systems of any smartphone. The triple 200MP rear setup with large sensors all around means that you can use any lens on any occasion. If that's not enough, the selfie camera is excellent, and the video features are among the best around.
You want an exceptional all-rounder
The Find X10 Pro Max isn't just about the cameras; the gaming performance is great, the software is brilliant, and the battery life is top-tier, too. No matter what you want from your phone, you'll likely find it here.
Don't buy it if...You already have the Oppo Find X9 Ultra
The Find X9 Ultra beats the X10 Pro Max in both long-range zoom and low-light photography with its larger main and 3x telephoto sensors. That said, the X10 Pro Max has a far better ultra-wide camera and some additional video features. Many will feel that it's a sideways move, rather than an upgrade.
You want something compact and lightweight
There's no getting around the fact that this is a fairly large, chunky, and weighty phone. If you're looking for something that you'll barely feel in your pocket, you should look elsewhere.
Oppo Find X10 Pro Max review: Also considerThe Oppo Find X10 Pro Max is one of the best camera-focused flagship phones, but it's important to consider the competition, too. Here are a couple of competitors that are worth looking at:
Vivo X500 Pro Max
While it hasn't been released globally just yet, we've tried the Chinese version of the Vivo X500 Pro Max, and it's definitely the closest competitor to the X10 Pro Max. The two trade blows in almost every respect, and both have external teleconverters to expand their capabilities. I feel like the X10 Pro Max is more well-rounded, but the Vivo has some incredible video features that could sway you.
Read our hands-on Vivo X500 Pro Max review
Oppo Find X9 Ultra
Oppo's own X9 Ultra is one of the few phones that can truly beat the cameras of the X10 Pro Max. The main reason is the dedicated 10x telephoto camera, but larger sensors on the main and 3x help in low light, too. On the other hand, the X10 Pro Max's ultra-wide is far superior.
Read our full Oppo Find X9 Ultra review
Oppo Find X10 Pro Max
Vivo X500 Pro Max
Oppo Find X9 Ultra
Price:
£1,499
TBC
£1,449
Display:
6.78-inch OLED
6.85-inch OLED
6.82-inch OLED
Cameras:
200MP main; 200MP ultrawide; 200MP telephoto
50MP main; 50MP ultra-wide; 200MP telephoto
200MP main; 50MP ultra-wide; 200MP 3x telephoto; 50MP 10x telephoto
Processor:
MediaTek Dimensity 9600 Pro
MediaTek Dimensity 9600 Pro
Qualcomm Snapdragon 8 Elite Gen 5
Battery:
8,000mAh / 7,150mAh (EU)
8,000mAh (CN) / 6,800mAh (EU)
7,050mAh
How I tested the Oppo Find X10 Pro Max☑️ 100s of smartphones reviewed
☑️ 15 years of product testing
☑️ Over 16,000 products reviewed in total
☑️ Nearly 200,000 hours testing tech
I put my SIM card into the Oppo Find X10 Pro Max and used it as my main phone for over three weeks. I used it exactly as I would use any other phone, taking lots of photos, gaming, messaging, working, streaming video, and navigating with Google Maps and Waze.
I also compared the experience of playing graphically challenging games like Neverness to Everness to my experience on other Android flagships like the Galaxy S26 Ultra and Xiaomi 17 Ultra. I ran lots of benchmarks on the handset, including 3DMark and Geekbench, to confirm my performance findings.
I assessed the phone's battery performance based on my real-world usage, and charging times were measured using the official Oppo wall adapter along with the included charging cable.
First tested October 2026
In the early days of the iPhone, seeing one in the wild, usually in a brave early adopter's hands, was like spotting a unicorn. The excitement was palpable. Over the years, though, as every smartphone has become a glass and metal slab, making it difficult to tell one iPhone release from another, the excitement has diminished. Where I used to keep my 'regular' iPhone review units out of sight, I now casually carry them around in a case, and no one is any the wiser.
That, though, is not the case with the iPhone Duo. In my effort to spend as much time using the new folding iPhone as possible, I carried it everywhere, including to a wedding party for my friend's son. My iPhone Duo test unit was somewhat disguised by being clad in a Taupe Folio with a Kickstand case, but as I held it aloft to photograph the newlyweds, the bride's eyes grew wide.
"Is that...?!"
My eyes darted from her to the phone in my hand, and I considered stuffing it back in my pocket, but I was intrigued by her reaction. I hadn't seen this level of interest and excitement in years.
I nodded wordlessly; the newlyweds started peppering me with questions, and as I folded and unfolded it, and they glimpsed the inner display, the bride's jaw dropped. She asked if I liked it. I mumbled, "Yes, I think so," without offering much more information.
I was determined to use the iPhone Duo's two external 48MP cameras to photograph the event, which meant this scenario repeated itself more than once.
It was obvious that, unlike every other iPhone of the last decade or so, the iPhone Duo could not travel incognito; people were, it seemed, intensely interested in Apple's first truly new iPhone form factor in basically forever.
The interest is warranted.
(Image credit: Lance Ulanoff / Future)The iPhone Duo is not simply an iPhone folded in half. I'd argue it's only marginally an iPhone and more of a hybrid, splitting the difference between a sub-sized smartphone and a slightly larger, 8-inch iPad mini.
From the highly polished titanium frame to the curves and pitch-perfect tolerances, the iPhone Duo's design is Apple at its best, and while it doesn't reinvent the genre, the nano-texture finish on the main display cannily solved the chief folding phone complaint: that darn crease. It's not that the crease is completely gone, but in daily use it's virtually invisible. As an added bonus, that matte finish kills reflectivity in bright sunlight, and makes almost everything look better.
Apple includes four cameras, three of which are powerful enough to produce high-quality photos across a range of styles. I saw excellent color accuracy and low-light performance, and the ultra-wide camera feels expansive. The inner-display camera is, it appears, just 4MP, but it does a good job with casual selfies and FaceTime calls.
Apple has almost stuck the landing here, but there is a slight step backwards. I'm fairly certain its decision to move the status bar and dock to the right side of the 5.4-inch outer screen, and therefore shrink the width of most apps, will divide opinion. I like how this makes it easy to tap an app with your right thumb, but the remaining screen real estate makes some app experiences look and feel cramped.
Then there's the lack of Face ID on the cover screen, which means this is the first iPhone in ages that I have to use my finger to unlock.
I'm also less than thrilled that a nearly $2,000 / £1,999 phone starts with just 256GB of storage; although, to be fair to Apple, the $1,899.99 / £1,699 Galaxy Z Fold 8 also starts with the same amount.
Those small nits are like pointing out the missing eyelashes on the Mona Lisa, though. Overall, this is a fantastic entry into the folding phone space, offering the dual capabilities of a glanceable and attractive iPhone that fits in any pocket or hand, and a versatile 7.6-inch tablet.
Not everyone needs two screens in one device, or wants to pay as much as they would for a home appliance for their next smartphone; but for those who feel confined by the boundaries of a typical iPhone and want to do more in less space, the iPhone Duo, which starts out smaller than your average smartphone but unfolds to reveal an almost twice-as-large tablet display, is well worth your consideration.
Apple iPhone Duo review: Price and availabilityApple unveiled the iPhone Duo, its first folding phone, as its "one more thing" during the Surprise and Shine event on September 9, 2026.
The list price is $1,999 / £1,999 / AU$3,499 for the 256GB model, which is in line with most of its folding competitors from Samsung, Huawei, Motorola, and Oppo. It's available in storage configurations up to 2TB for $3,199 / £3,199 / AU$5,899.
The iPhone Duo is the most expensive iPhone Apple has ever made, but we should put this in context. Like most foldables, this is a two-in-one device: a pint-sized smartphone with a 5.4-inch 4:3 screen, and a 7.6-inch tablet. Unlike the Galaxy Z Fold 8, which has a similar passport-style shape, and even the Samsung Galaxy Z Fold 8 Ultra, which is a more conventionally sized and shaped foldable, the iPhone Duo's larger main screen supports digital pen input (this wasn't available for my testing period, but it's expected by November).
You may also be able to soften the price blow a bit with a trade-in; or you might want to look at Apple's leasing program, which will run about $57-to-$83 / £47 to £66.63 / AU$97.19 to over $161 a month for the base model.
In total, the iPhone Duo is probably better value than you think.
Apple iPhone Duo pricingStorage
US price
UK price
AU price
256GB
$1,999.99
£1,999
AU$3,499
512GB
$2,199
£TBD
AU$TBD
1TB
$2,599
£TBD
AU$TBD
2TB
$3,199
£TBD
AU$TBD
These are the key specs of the Apple iPhone Duo:
Dimensions:
Unfolded: 164.6 x 117.8 x 5.2mm, Folded: 84.1 x 117.8 x 11.3mm
Weight:
254g
Displays:
Main: 7.6-inch Super Retina XDR, Cover: 5.4-inch Super Retina XDR
Resolution:
Main: 1878 x 2670, Cover: 1398 x 2034
Refresh rate:
1-120Hz (main and cover)
Peak brightness:
3,000 nits
CPU:
A20 Pro
RAM:
12GB
Storage:
256GB, 512GB, 1TB, 2TB
OS:
iOS 27
Cameras:
48MP wide (f/1.6), 48MP ultra-wide (f/2.2)
Selfie cameras:
11MP Center Stage camera (f/2.2) outer, 4MP (f/1.8) inner
Battery:
4,800mAh (approximate)
Charging:
60W wired, 35W wireless
Colors:
Star White, Night sky
Apple iPhone Duo review: Design'Satisfying' is the best way to describe the feeling of repeatedly opening and closing the iPhone Duo. It's as if Apple inadvertently created a digital fidget spinner — the more I carried around the iPhone Duo, the more I found myself absentmindedly folding and unfolding the phone.
Apple's exceptional engineering makes it possible to unfold the phone initially, with almost no effort (it almost springs open at the slightest intentional touch), before the internal torque kicks in to allow for the Duo to be opened to almost any angle between zero and 180 degrees (flat).
Lance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureWhile you can't see the work that went into making this hinge, the effort is evident in every single touch and move. Inside are hundreds of magnets and other components that keep the phone securely closed, but never get in the way of an easy opening. More so than with any folding phone I've tested, the hinge essentially disappears when the iPhone Duo is unfolded flat.
At 5.2mm thick, the fingerprint-attracting polished titanium iPhone Duo is the thinnest iPhone ever. At least that's how Apple markets it, but that's in tablet mode; I do like the sound of a 5.2mm-thick tablet. The 7.6-inch device is thinner than the 8-inch iPad mini (6.3mm). Folded, the iPhone Duo is 11.3mm thick, almost 2mm thicker than the folded Galaxy Z Fold 8. And at 254g, the iPhone Duo outweighs the Galaxy Z Fold 8 by a noticeable 53 grams. It's even slightly heavier than the iPhone 18 Pro Max, which weighs 249g.
Lance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureThe upshot of all this is that while the 4.64-inch by 3.31-inch folded iPhone Duo fits in even the smallest pocket, you will feel its heft, especially if you pop, say, a Folio with Kickstand case on it.
The iPhone Duo stands out in a way few iPhones have in recent years. Folded, it's closer to square than rectangular in shape, resembling a squat iPhone Pro Max. Plus, the asymmetry — flat and square on one side and curved on the other when folded — means the Duo cuts a unique profile among smartphones.
It does feel good in the hand, though the wider body might take some getting used to. I like the Ceramic Shield 2 front and back, especially the matte-finished back, which makes the Duo almost slip-from-your-hand-proof. The large dual-camera array bump is reminiscent of the iPhone Air, though the similarities end there.
(Image credit: Lance Ulanoff / Future)The volume buttons live on the top edge, another departure from the traditional iPhone, and indeed from smartphone design in general — I'm not sure I love that decision. On the right is the long Touch ID-enabled power/sleep/Siri AI button, and below that is the Action button. I often forget that last button exists on my iPhone 18 Pro Max, and I wonder if it was truly necessary here.
I appreciate the inclusion of Touch ID (I registered my index finger and thumb), but the lack of Face ID is frustrating — I had no idea how much I relied on it for quickly unlocking my phone until it wasn't there. Multiple times I've stared at the iPhone Duo's cover screen waiting for something to happen, forgetting that I have to intentionally touch the Touch ID button. A nearly $2,000 device lacking Apple's most powerful biometric security feature is close to unforgivable — I'll probably set up a workaround so that I can unlock the Duo via my Apple Watch.
Samsung Galaxy Z Fold 8 on left, iPhone Duo on rightLance Ulanoff / FutureSamsung Galaxy Z Fold 8 on left, iPhone Duo on rightLance Ulanoff / FutureSamsung Galaxy Z Fold 8 on left, iPhone Duo on rightLance Ulanoff / FutureSamsung Galaxy Z Fold 8 on left, iPhone Duo on rightLance Ulanoff / FutureSamsung Galaxy Z Fold 8 on bottom, iPhone Duo on topLance Ulanoff / FutureSamsung Galaxy Z Fold 8 on left, iPhone Duo on rightLance Ulanoff / FutureAlong the bottom edge are the USB-C port (the phone ships with a charging cable but no power adapter), the speakers, and the mics.
Unfolded, the iPhone duo feels like a thin, compact tablet — I hesitate to say 'iPad' since the operating system is essentially iOS with some small adjustments for the new form factor.
Lance Ulanoff / FutureRemarkably, Apple comes out of the folding gate flourishing an IP68 rating, which means the iPhone Duo is protected against dust and even water. Naturally, I submerged the Duo under a running faucet, and it was none the worse for the experience.
Overall, I like the design and form factor, but it's different from a traditional iPhone, so it does take some getting used to. I struggled, for instance, to figure out the best way to hold the phone for photography. Do I need to turn it into landscape mode, or should I just hold it the way I hold a 'regular' iPhone? I do wonder how many will choose to unfold the phone, and shoot pictures in the same way they might with their iPad.
Credit to Apple for not skimping on either of its iPhone Duo displays. Both the 5.4-inch outer and the 7.6-inch flexible inner screens are Super Retina XDR-class OLED panels, both with variable refresh rates up to 120Hz, always-on functionality, and up to 3,000 nits of brightness.
Both displays look impressively sharp, and actually offer slightly higher resolutions than the comparable displays on the Samsung Galaxy Z Fold 8.
The iPhone Duo's 5.4-inch cover display has a 2034 x 1398 resolution (compared to the Galaxy Z Fold 8 cover display's 1972 x 1248), and the 7.6-inch Inner display is 2670 x 1878 (compared to the Z Fold 8's 2448 x 1848 main display).
At first glance, the iPhone duo Cover screen is instantly recognizable as an iPhone, but close scrutiny reveals some interesting adjustments for the relatively short and wide display. First, the pill-shaped Dynamic Island sits in a vertical space along the right side, and when you look at the home screen, the dock is stacked vertically below the time and a status button (a single tap on it expands it to show connectivity and battery, and also drops down the full Control Center).
The Duo takes that right-hand space and rarely gives it up, which means that websites can look cramped in Safari, and some apps like TikTok, and even Apple's native ones, like Sports, can feel a bit squeezed. There are exceptions, like when you use the screen as a viewfinder in the Camera app, or look back at images in the Photo Gallery. In those cases, the imagery fills the entire screen.
(Image credit: Lance Ulanoff / Future)I'm less conflicted about the glorious main screen. It's big, it's responsive, and the matte, nano-texture covering almost completely hides the crease by dispersing any light bouncing off it, instead of directing it right back to your eyes. The display looks and feels perfectly flat, plus that matte covering kills all reflections, and makes every image look almost magazine-quality. It could be argued that a tiny bit of visual punch is lost in the texture, but I really enjoyed everything I viewed and did on the screen. It feels wonderful to the touch, and I had fun playing games like PUBG, browsing the web on a big screen, watching Netflix, reviewing and editing my photos, and multi-taking (more on that later).
Unlike the Galaxy Z Fold 8 and 8 Ultra, the iPhone Duo's inner display supports a stylus, specifically the USB-C Apple Pencil. That support is not yet live, but I can't wait to start drawing on the Duo. I did attempt some Procreate Pocket sketches with my finger, and it didn't go well, which is mostly a me problem. However, I had slightly better luck with an analog stylus (see below).
(Image credit: Lance Ulanoff / Future)Apple hides the 4MP inner FaceTime camera behind a handful of pixels, but they don't appear to have the exact same mix of matte and pixel density as the rest of the display, and as such are easy to spot. I wonder if Apple should have just gone with a standard, albeit smaller, cutout.
As on the cover display, Apple has positioned the status and dock vertically on the right side of the main display. I wonder why, in Tablet mode, Apple didn't simply copy the iPad and put this bar at the base of the screen. Still, I noticed that the dock disappears when you're in apps like Safari.
There's more to say about app compatibility with this platform, which I'll get into later in the Software section of this review.
(Image credit: Lance Ulanoff / Future)I especially like the redesigned Standby feature, which takes advantage of the Duo's multiple displays and foldable nature. You can prop up the phone like a tent and have the Standby display appear in landscape mode. If you flip the phone up so it's standing on your desk like an open book, the Duo knows to switch Standby to the inner display. At one point I popped the Duo onto my old Belkin MagSafe charger, and used it as a nightstand clock. It's so smart and useful.
What we have here are two excellent displays with a wide array of capabilities in one device. It's both a tiny iPhone and a mini tablet, with two screens that should please both the iPhone and iPad crowds. I have my reservations about the cover screen, but as an overall multi-display package, I'm impressed with the Duo.
It's been a long time since I've reviewed an iPhone on which camera considerations come second to design and mechanical engineering, but the excitement revolving around the iPhone Duo is about its folding capability, creaseless inner screen, and unique-among-iPhones form factor.
Even so, there's no indication that Apple has skimped on three of the four cameras. Yes, the inner camera is just a 4MP shooter that's primarily devoted to FaceTime calls, but the rest of the lenses — 48MP f/1.6 Main, 48MP f/2.2 ultra-wide, and 12MP f/2.2 Center Stage — are all excellent.
While I haven't had a lot of time with the iPhone Duo, I have managed to shoot in a variety of conditions and situations, pushing the cameras on speed, image quality, color, and low-light performance.
The two external cameras default to shooting at 24MP, which means each photo has effectively twice as much information per pixel (the process is called binning).
(Image credit: Lance Ulanoff / Future)I was particularly impressed by the level of detail in the main-camera shots — just look at the specks of pollen on the marigold flower in the gallery below. That same image shows an exceptional balance of shadows and light; the sunlight bleed on the right does not overwhelm the exposure of the rest of the image.
In a challenging social-club environment, the main wide and ultra-wide cameras acquitted themselves nicely, making exposure adjustments to capture the moment without too much grain. Obviously, there was some motion blur, but I think it added to the emotional weight of the event.
With the iPhone duo, Apple has introduced Smart Take, which I liken to your own personal fashion photographer. The setting lives under the grid menu (drawer) in the Camera app, and once it's on, you can set the phone folded at 90 degrees on a desktop, start posing in front of the camera, and Smart Take will capture the 'best shots.'
When I used it, I noted that while I was trusting the phone to take some decent photos of me, I couldn't see a display to keep track of what it was capturing (Smart Take is not supported on the 4MP inner camera). Still, I started striking poses, assuming that the camera would deem those best. It kind of worked, though I think Smart Take would work best if you're able to put the iPhone Duo up on a tripod or shelf to make sure the camera is closer to eye level.
Lance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureSimilar to what we've seen on other foldable phones, Apple has included a camera mode, Duo Preview, that lets you use the best main or ultra-wide camera while still using the cover display as a viewfinder. It's a useful table-stakes feature that I'm glad Apple included, especially since the inner camera is so underpowered.
Apple says you get 2x effective optical zoom on the main camera, but that's a sensor crop. Yes, the pixels and image information will be real, but I prefer a proper zoom lens. To be fair, the iPhone Duo camera array is quite similar to the 50MP pair on the Galaxy Z Fold 8, which also lacks a telephoto lens.
(Image credit: Lance Ulanoff / Future)I also used the cover screen Center Stage camera to shoot some portrait-mode selfies. They were, as you might expect, impressive (not the subject, just the brilliant bokeh).
The iPhone Duo's trio of high-quality cameras meets, in my estimation, the high watermark set by lenses on previous iPhones, including the iPhone 17 Pro (the 18 Pro models come with a variable aperture).
Lance Ulanoff / FutureLance Ulanoff/ FutureLance Ulanoff/ FutureLance Ulanoff/ FutureLance Ulanoff/ FutureLance Ulanoff/ FutureLance Ulanoff/ FutureLance Ulanoff/ FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureWith the iPhone Duo, iOS officially means multiple things. Where it was once a smartphone platform, it's now a multi-hardware-configuration operating system that can, depending on where it's installed, fork appropriately.
Instead of the iPhone Duo unfolding and converting into an iPad, it remains steadfastly an iPhone with tablet-like capabilities. This has resulted in some odd decisions on Apple's part, like hiding some of the ever-present status-bar information, including battery life, and rotating and moving the dock. Even the iPad doesn't put the dock on the right-hand side.
On the cover screen, the status bar and dock placement cut into screen real-estate for some apps and browser experiences; this is less of an issue on the larger inner screen.
(Image credit: Lance Ulanoff / Future)Since this is not pure-play classic iOS, there is some discontinuity in third-party app support. During my testing, Gmail and LinkedIn didn't look great. The former is stretched wide but doesn't fill the full depth of the display; LinkedIn floats in the middle.
For unoptimized apps, I did have the option of using the very iPad-like 2x zoom icon, which stretched the app to fit more of the screen. In some instances, apps appeared to work, but some features were broken. When I played Asphalt Legends on the inner display, tilt-to-steer was broken, though it worked perfectly on the cover display.
Lance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureSome third-party apps, including Netflix (clips looked pretty good on the Cover display), and first-party apps like Safari and Messages, look great, and effectively use all the 7.6-inch display's real estate. There are even some apps that are already custom-designed to take advantage of the dual-display setup.
Lance Ulanoff / FutureLance Ulanoff / FutureOne of my favorites is a game called Toastie. On the inner screen, you butter your bread, add cheese and other ingredients, then hit grill, at which point you fold the phone closed, and it gently pulses for each second of cooking. You have to decide when to stop. To see your grilled cheese sandwich, you open the phone — I did this a half dozen times before I had a virtually edible sandwich.
Lane Ulanoff / FutureLane Ulanoff / FutureDeck-Man is also a cute concept; this turns your iPhone duo into a classic cassette tape player, complete with the static you hear when the player is on but not playing a tape. When the iPhone is open, you choose a cassette and virtually put it in the player, then you close the phone to access the player controls. I especially liked how "rewinding" the tape reproduced the classic sounds of a physical tape rewinding in an old-school player.
I also played Battle Fleet, which is a Battleship knockoff, and works well when you set up the phone in 90-degree opened desktop mode.
These are all clever apps, though I wouldn't argue that any are the Duo's 'killer app.'
The 7.6-inch inner display is also a good canvas for multitasking. You split the screen by swiping up from the bottom of the display and slowly dragging an app left or right. Inside each pane, you can swipe up to choose a different app. I used this to have Messages and Safari side-by-side, and also for the drawing app Procreate on one side and a reference image from Safari on the left.
Lance Ulanoff / FutureLance Ulanoff / FutureLance Ulanoff / FutureUnlike on the Galaxy Z Fold 8, you can't run three apps, though the iPhone Duo will let you add picture-in-picture video on top of two apps you have open.
The iPhone Duo is a good showcase for Apple's growing AI ambitions. Siri AI now knows more about me and my smartphone, so when I ask if there are any emails I should know about, it automatically accesses 'Priority Mail' in the Mail app, and quickly starts reading off the first crucial message. Siri AI is better at maintaining context, so I don't have to restate myself, but it's still not foolproof. I asked Siri where I had been yesterday, and it showed me a picture of myself and listed my age. Siri AI should, though, get better as it continues to index my system.
In general, iOS 27, which is more customizable that ever, has useful widgets and more powerful AI features, and is the perfect platform for Apple's biggest iPhone design leap. It may not have all the design elements right, and the app support is lagging a bit behind, but these are all minor, and I think easily adjustable or fixable, issues.
Apple smartly put the same CPU, the 2-nanometer A20 Pro, in the iPhone Duo as it did in the iPhone 18 Pro and Pro Max. As a result, the performance on its first foldable device is equally impressive. In Future Labs benchmark tests, the A20 Pro on an iPhone Duo beat the Galaxy Z Fold 8's Qualcomm Snapdragon 8 Elite Gen 5 for Galaxy in Geekbench 7 single- and multi-core tests, and it also edged out the Qualcomm chip in most of our graphics tests. None of this was by a wide margin, and I'd challenge anyone to notice the difference in real-world scenarios. Still, it's nice to know that the Duo is cooking with gas, just like its Pro counterparts.
In my experience, the iPhone Duo is fast and fluid. Speaking of which, it's fun to start with some third-party apps on the cover screen, and then flip open the iPhone Duo to see the virtually seamless graphics handoff from the smaller display to the larger one. It's both a software and performance feat that nothing stutters or stalls in the handoff process.
(Image credit: Lance Ulanoff / Future)The larger inner screen will probably encourage many to try even tougher tasks, like editing 40K 60fps video. I used CyberLink PowerDirector to do so, and while the system and app handled the task fine, the non-optimized app couldn't properly fill the 7.6-inch display.
The back of the phone, near the camera bump, can get a little warm during gaming and other CPU-intensive operations, like recording the aforementioned 4K video, but not uncomfortably so.
Apple's A20 and the 12GB of RAM on board seem well suited to local tasks like photo editing in Cleanup, and both realistic and fanciful image creation in Image Playground.
Apple's AI-powered image cleanup is getting really good. Look at how it removed this woman from a photo of my wife.Lance Ulanoff / FutureLance Ulanoff / FutureYou never know when you're going to need a dragon riding a car in the desert.Lance Ulanoff / FutureThe iPhone Duo starts with 256GB of storage, which matches the Galaxy Z Fold 8. At this price, though, I think it should start with double that. You can expect strong connectivity across the board from the iPhone Duo. Inside is Apple's C2 modem for better 5G connectivity. Plus, there's support for WiFi 7, Bluetooth 6, and Messages via Satellite.
Apple iPhone Duo benchmark scoresApple iPhone Duo
Geekbench 7.1 single-core
4007
Geekbench 7.1 multi-core
11363
3DMark Wild Life Extreme Unlimited
7171
3DMark Wild Life Extreme (fps)
45.3
3DMark Solar Bay Unlimited
16496
3DMark Solar Bay Unlimited (fps)
6.3
Apple reportedly squeezed a fairly large, almost 5,000mAh, battery into the iPhone duo, and is promising some pretty impressive battery-life numbers based on fairly specific types of usage. Video playback, which doesn't rely all that much on energy-draining resources, can, Apple claims, go for an eye-watering 44 hours, or 31 hours on the larger inner display.
In more varied use, Apple is claiming a full day of battery life on a charge. In my real-world tests I got around 14 hours, and in our more stringent Future Labs tests, we got 13 hours. That's commendable performance, but not as good as what the same Future Labs tests show for the Samsung Galaxy Z Fold 8, which managed 14.33 hours.
I still think the iPhone Duo's numbers are good, especially because my experience was easily cruising through a full day of phone activities, without any concern that I needed to plug in.
The phone supports fast charging and, with a 45W charger, I charged to 60% in 30 minutes. The MagSafe back also supports fast wireless charging.
Attributes
Notes
Rating
Value
Most expensive iPhone ever but it's truly a two-in-one device and few will pay the full price upfront anyway, especially with the new leasing option.
4 / 5
Design
Beautifully designed and engineered foldable that makes the hinge and, virtually, hinge disappear. Wish it was thinner and lighter.
4.5 / 5
Displays
Sharp cover dsispl;ay and brilliant inner display that hides the crease and offered a beautiful matte finish. Everything looks good on it
4.5 / 5
Camera
Two strong 48MP lenses and an above average Center Stage selfie camera that all produce top-notch images. The inner camera is best for FaceTime only and we miss a true telephoto.
4.5 / 5
Software
Apple shows how iOS can also be a tablet platform without losing its iPhone essence. Siri AI is starting to live up to its promise. We need more app support and not a huge fan of Status and Dock placement.
4.5 / 5
Performance
An excellent A20 Pro CPU helps the iPhone Duo live up to its promises. There are zero lags, even when playing console-level games
5 / 5
Battery
All day battery life is virtually assured.
4.5 / 5
Buy it if...You've been waiting for Apple to enter the folding race
The iPhone Duo is pretty much everything you want or could dream of from a folding iPhone
You want two screens but also cuter and pocketable
The iPhone Duo might be thicker and heavier than a Galaxy Z Fold 8, but it's right-sized for small hands and smaller pockets, and while the Galaxy Z Fold line is all flat edges and sharp corners, the iPhone Duo has curves.
You don't want to see a crease
Apple now holds the crown for best crease concealer, hiding it under nano texture finish that makes it almost impossible to spot the crease unless you really look for it.
You want an affordable smartphone
The iPhone Duo is not just the most expensive iPhone; it's more expensive than the Galaxy Z Fold 8. Either way, think carefully before buying; not everyone needs two displays in one device.
You want a telephoto camera
The iPhone Duo's main camera promises 2X optical equivalent zoom, but that's a sensor crop, which means there's no dedicated telephoto camera.
Samsung Galaxy Z Fold 8
Samsung has adapted familiar elements to make a phone that's ready to fit your lifestyle with its practical size, excellent screens, and plenty of software and performance potential. It’s still costly, and the lack of some features seems extra disappointing given the price, but what’s here gels together in a wonderfully cohesive way.
Read our full Samsung Galaxy Z Fold 8 review
Motorola Razr Plus 2026
This is currently our best flip-style foldable pick, and it might be the better device for you if you're looking for a foldable that can go the distance with its battery, and don’t mind only having a standard-sized phone screen when you open it up.
Read our full Motorola Razr Plus 2026 review
Samsung Galaxy Z Fold 8 Ultra
Considering the minimal price difference, you might be better off saving a little extra money and getting the full-fat fold experience with more screen space, a telephoto camera, and a longer-lasting battery. The Z Fold 8 Ultra isn't as well-suited to video, though.
Read our full Samsung Galaxy Z Fold 8 Ultra review
Apple iPhone Duo
Samsung Galaxy Z Fold 8
Motorola Razr Plus 2026
Samsung Galaxy Z Fold 8 Ultra
Price (at launch):
From $1,999 / £1,999 / AU$3,499
From $1899, £1699, AU$2699
$1,099, £1,000
From $2,099 £1,899. AU$2,999
Dimensions:
Unfolded: 164.6 x 117.8 x 5.2 mm, Folded: 84.1 x 117.8 x 11.3 mm
Unfolded: 161.4 x 123.9 x 4.5mm, Folded: 81.9 x 123.9 x 9.7mm
Unfolded: 2.9 x 6.7 x 0.3 in
Folded: 3.5 x 2.9 x 0.6 in
Unfolded: 158.4 x 143.2 x 4.1mm, Folded: 158.4 x 72.8 x 8.9mm
Weight:
254g
201g
189g
215g
Displays:
Main: 7.6-inch Super Retina XDR, Cover: 5.4-inch Super Retina XDR
Main: 7.6-inch Dynamic AMOLED 2X, Cover: 5.5-inch Dynamic AMOLED 2X
Main: 6.9-inch AMOLED, Cover: 4-inch AMOLED
Main: 8-inch Dynamic AMOLED 2x, Cover: 6.5-inch Dynamic AMOLED 2X
Resolution:
Main: 1878 x 2670, Cover: 1398 x 2034
Main: 2448 x 1848, Cover: 1972 x 1248
Main: 1084 x 2640, Cover: 1272 x 1080
Main: 2256 x 2504, Cover: 1080 x 2520
Refresh rate:
1-120hz
1 - 120Hz (main and cover)
1 - 165 Hz (main and cover)
1 - 120Hz (main and cover)
Peak brightness:
3,000
3,000 nits (main and cover)
Main: 3,000 nits, Cover: 2,400 nits
3,000 nits (main and cover)
Processor:
A20 Pro
Snapdragon 8 Elite Gen 5 for Galaxy
Qualcomm Snapdragon 8s Gen 3
Snapdragon 8 Elite Gen 5 for Galaxy
RAM:
12GB
12GB, 16GB (1TB model only)
12GB
12GB, 16GB (1TB model only)
Storage:
256GB, 512GB, 1TB, 2TB
256GB, 512GB, 1TB
256GB
256GB, 512GB, 1TB
OS:
iOS 27
Android 17 with One UI 9
Android 16
Android 17 with One UI 9
Cameras:
48MP wide (f/1.6), 48MP ultra-wide (f/2.2)
50MP wide, 50MP ultra-wide
50MP main, 50MP ultra-wide
200MP wide, 50MP ultra-wide, 10MP telephoto
Selfie cameras:
11MP Center Stage camera (f/2.2) outer, 4MP (f/1.8) inner
10MP inner, 10MP outer
32MP
10MP inner, 10MP outer
Battery:
Approximately 4,800mAh
4,800mAh
4,500mAh
5,000mAh
Charging:
60W wired, 35W wireless
45W wired, 20W wireless
45W wired, 15W wireless
45W wired, 20W wireless
Colors:
Star White, Night sky
Lavender, Graphite, Cream, Mint (Samsung Store exclusive)
Pantone Mountain View
Violet Shadow, Graphite, Cream, Green Shadow (Samsung Store exclusive)
How I tested the Apple iPhone DuoWhy 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 used the iPhone Duo for almost a week for everything from social media to Slack and email. I perused websites, watched videos, played games, followed maps and turn-by-turn directions, and took photos. In short, I tried ot use it as my primary device
First reviewed October 2026
The Acer Googlebook 14 is one of the first Googlebook devices on the market. Unlike budget Chromebooks, Googlebooks are premium laptops that run Googlebook OS, an operating system based on Android, and Acer’s model is the most affordable variant and the only one that currently offers a 2-in-1 form factor.
What does it cost?Googlebooks aren’t budget devices like Chromebooks — they come with premium price tags. That said, the Acer Googlebook 14 is the cheapest model you can get right now, starting at $899 / £999 (around AU$1,300). This entry-level model comes with an Intel Core Ultra 5 Series 3 processor, a 14-inch OLED screen, and 16GB RAM, and in some markets, you can also get it with a more powerful Intel Core Ultra 7 processor.
AlternativesThe Acer Googlebook 14 launches alongside four other Googlebooks: the Asus Googlebook 14, HP Googlebook 14, Lenovo Googlebook 15, and the Dell XPS Googlebook. These laptops all have superficially similar specs, such as starting with 16GB of RAM and 512GB storage, but each one has a different selling point, be it a larger screen, thinner design, or, in the Acer Googlebook 14’s case, a 2-in-1 design.
@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-1792508542435-ue84mtyht *, #fv-chart-1792508542435-ue84mtyht *:before, #fv-chart-1792508542435-ue84mtyht *:after, #fv-chart-1792508542435-ue84mtyht-slideshow *, #fv-chart-1792508542435-ue84mtyht-slideshow *:before, #fv-chart-1792508542435-ue84mtyht-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792508542435-ue84mtyht, #fv-chart-1792508542435-ue84mtyht-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792508542435-ue84mtyht { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792508542435-ue84mtyht.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792508542435-ue84mtyht.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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792508542435-ue84mtyht-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-1792508542435-ue84mtyht-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-1792508542435-ue84mtyht-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn.disabled, #fv-chart-1792508542435-ue84mtyht-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-1792508542435-ue84mtyht-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792508542435-ue84mtyht-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-1792508542435-ue84mtyht-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792508542435-ue84mtyht .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792508542435-ue84mtyht .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792508542435-ue84mtyht .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792508542435-ue84mtyht .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792508542435-ue84mtyht .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar-row, #fv-chart-1792508542435-ue84mtyht .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792508542435-ue84mtyht .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792508542435-ue84mtyht .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht.mobile-view .fv-pie-container, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stacked-product, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-grouped-bar-product, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stacked-product, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792508542435-ue84mtyht.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-1792508542435-ue84mtyht.mobile-view .fv-bar-label, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-grouped-product-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-label, #fv-chart-1792508542435-ue84mtyht.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-1792508542435-ue84mtyht.mobile-view .fv-bar-container, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-cluster, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-container, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.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-1792508542435-ue84mtyht.mobile-view .fv-x-axis-wrapper, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-x-axis-label-space, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-x-axis-chart-space, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-benchmark-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-dropdown-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-carousel-nav-btn, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-chart-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-chart-subhead, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-header, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-wrapper, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-vs, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-container, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792508542435-ue84mtyht.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-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-dials-grid, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-dial-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792508542435-ue84mtyht .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-row, #fv-chart-1792508542435-ue84mtyht .fv-stacked-product, #fv-chart-1792508542435-ue84mtyht .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar-label, #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-bar-container, #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster { width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-label-space { display: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792508542435-ue84mtyht .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .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-1792508542435-ue84mtyht .fv-stl-shop-all-logo, #fv-chart-1792508542435-ue84mtyht .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792508542435-ue84mtyht.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Acer Googlebook 14 scorecard", "description": "How the Acer Googlebook 14 scored in our review", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T15:02:22.435Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Acer Googlebook 14", "Value", "Design", "Performance", "Battery life", "Overall", "Group 1", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Value", "value": 4, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Design", "value": 4, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Performance", "value": 3.5, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Battery life", "value": 3, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Overall", "value": 4, "unitText": "", "maxValue": 5 } ]}{"version":2,"exportedAt":"2026-10-20T15:02:22.435Z","state":{"data":[{"productName":"Acer Googlebook 14","attribute":"Value","value":4,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Design","value":4,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Performance","value":3.5,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Battery life","value":3,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Overall","value":4,"unit":"","maxValue":5}],"products":["Acer Googlebook 14"],"attributes":["Value","Design","Performance","Battery life","Overall"],"selectedProducts":["Acer Googlebook 14"],"selectedPrimaryProduct":null,"selectedAttributes":["Value","Design","Performance","Battery life","Overall"],"productColors":[{"productName":"Acer Googlebook 14","color":"#2E6E93"}],"initialProductColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Battery life","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Acer Googlebook 14 scorecard","subhead":"How the Acer Googlebook 14 scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"Group 1"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 1":"Breaking down the Samsung Galaxy Book6 Ultra's scores, from value to overall experience."},"captionOverrides":{"grouped-bar-Group 1":"The Samsung Galaxy Book6 Ultra delivers exceptional performance, design, and battery life, each earning a stellar 4.5 rating, culminating in an impressive 4.5 overall score. While its value score is 2.5, the premium experience largely justifies its positioning."},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}Acer Googlebook 14 scorecardHow the Acer Googlebook 14 scored in our review
Value4Design4Performance3.5Battery life3Overall4Group 1 DataProductValue ()Design ()Performance ()Battery life ()Overall ()Acer Googlebook 14443.534 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792508542435-ue84mtyht', false); }); } else { initialize('fv-chart-1792508542435-ue84mtyht', false); } })(); Acer Googlebook 14 review: Value for moneyStarting at $899 / £999 (around AU$1,300), the Acer Googlebook 14 is the most affordable Googlebook in the initial lineup, with the Dell XPS Googlebook ($999 / $1,099 / $2,399) next. It’s around $200 / £200 cheaper than the HP Googlebook 14 and Asus Googlebook 14, the two most expensive Googlebooks.
The fact that the Acer Googlebook 14 is a 2-in-1 device, whereas the more expensive Googlebooks are simply traditional laptops, makes it, in my view, an even better value. The Acer Googlebook 14, as with all other Googlebooks, gives you 12 months of Google AI Pro (worth $249.99 / £220 / around AU$480), plus three months of YouTube Premium and a year of GeForce Now game streaming.
In the UK, Acer is also offering, for ‘a limited launch window’, an Acer Mega-Hardware Pack worth £144.96 which includes a compact 100W fast charger, 5-in-1 USB-C hub, Acer wireless mouse, three-year warranty — and it’ll plant 10 trees in the buyer’s name — a nice nod to Acer’s admirable focus on sustainability. This deal was supposed to end on October 19, 2026, but I have been informed by Acer that it’s been extended until the end of November.
This helps make the Acer Googlebook 14 an even better value, and I’ve asked Acer if similar bundles are being offered in the US, and will update this review when I hear back (the Acer Googlebook 14 isn’t currently on sale in Australia, which is a shame).
While the Acer Googlebook 14 is quite a bit more expensive than most Chromebooks, it’s a premium device with a gorgeous design and some powerful hardware, which does justify the higher price, somewhat. However, if money is tight, then a budget Chromebook will be a better buy.View Deal
Acer Googlebook 14 review: DesignWhen Google announced the first batch of Googlebooks, the company made it clear that these are premium laptops with designs to match. So, don’t think of the likes of the Acer Googlebook 14 as replacements for cheap and cheerful Chromebooks, but instead rivals to the MacBook Air, as well as Windows 11-powered ultrabooks.
That’ll be a disappointment to anyone who was hoping Googlebooks would be more affordable — perhaps rivalling the MacBook Neo when it comes to value for money. However, the Acer Googlebook 14 does look and feel like an expensive laptop, which goes some way to justifying the price.
With dimensions of 12.28 x 8.78 x 0.55 inches (312 x 222.9 x 13.9 mm), it’s slightly chunkier than the MacBook Air 13-inch (M5), though it comes with a slightly larger screen. It’s noticeably lighter than Apple’s laptop, weighing 2.51 lbs (1.14 kg), compared to the MacBook Air’s 2.7 lbs (1.24 kg).
@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-1792497446111-yjxgplq1g *, #fv-chart-1792497446111-yjxgplq1g *:before, #fv-chart-1792497446111-yjxgplq1g *:after, #fv-chart-1792497446111-yjxgplq1g-slideshow *, #fv-chart-1792497446111-yjxgplq1g-slideshow *:before, #fv-chart-1792497446111-yjxgplq1g-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792497446111-yjxgplq1g, #fv-chart-1792497446111-yjxgplq1g-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792497446111-yjxgplq1g { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792497446111-yjxgplq1g.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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792497446111-yjxgplq1g-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-1792497446111-yjxgplq1g-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-1792497446111-yjxgplq1g-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn.disabled, #fv-chart-1792497446111-yjxgplq1g-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-1792497446111-yjxgplq1g-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792497446111-yjxgplq1g-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-1792497446111-yjxgplq1g-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792497446111-yjxgplq1g .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-ia-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; overflow: hidden !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed .fv-ia-container { width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed .fv-ia-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-image { display: block !important; width: 100% !important; height: auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-container { position: absolute !important; z-index: 10 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important; transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button:hover { transform: scale(1.1) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button.is-active { background-color: #2E6E93 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-pulse-ring { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #2E6E93 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-ia-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; } @keyframes fv-ia-ping { 75%, 100% { transform: scale(2); opacity: 0; } } #fv-chart-1792497446111-yjxgplq1g .fv-ia-static-tooltip { display: none !important; position: absolute !important; top: -10px !important; left: 50% !important; transform: translate(-50%, -100%) !important; background-color: rgba(255, 255, 255, 0.95) !important; padding: 10px !important; border-radius: 6px !important; box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important; width: max-content !important; max-width: 200px !important; font-size: 13px !important; color: #1f2937 !important; z-index: 20 !important; pointer-events: none !important; white-space: pre-wrap !important; line-height: 1.4 !important; border: 1px solid #e5e7eb !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button:hover + .fv-ia-static-tooltip { display: block !important; } #fv-chart-1792497446111-yjxgplq1g .fv-logo-explore-bar { position: relative !important; width: 100% !important; display: flex !important; justify-content: center !important; align-items: center !important; min-height: 30px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-logo-explore-bar .fv-logo { margin: 0 auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-wrapper { position: absolute !important; right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-logo-explore-bar { flex-direction: column !important; min-height: auto !important; gap: 0.75rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-ia-explore-wrapper { position: static !important; align-self: flex-end !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn { background-color: rgba(255, 255, 255, 0.95) !important; color: #1e293b !important; border: 1px solid #e5e7eb !important; border-radius: 9999px !important; padding: 0.5rem 1.25rem !important; font-size: 0.875rem !important; font-weight: 600 !important; font-family: sans-serif !important; display: inline-flex !important; align-items: center !important; gap: 0.5rem !important; cursor: pointer !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important; transition: all 0.2s !important; pointer-events: auto !important; flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn:hover { background-color: #ffffff !important; transform: translateY(-2px) !important; box-shadow: 0 6px 8px -1px rgba(0, 0, 0, 0.15) !important; color: #2E6E93 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn svg { transition: transform 0.2s !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn:hover svg { transform: translateX(2px) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-active-modal-container { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modals { display: block !important; position: static !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modal-item { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modal-item.is-active { display: flex !important; flex-direction: column !important; position: absolute !important; top: 1rem !important; right: 1rem !important; z-index: 20 !important; width: 18rem !important; max-width: calc(100% - 2rem) !important; background-color: #ffffff !important; padding: 1rem !important; border-radius: 0.75rem !important; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important; border: 1px solid #e5e7eb !important; border-top: 4px solid #2E6E93 !important; animation: fv-ia-fade-in 0.2s ease-out !important; gap: 0.75rem !important; max-height: 80% !important; overflow-y: auto !important; pointer-events: auto !important; } @keyframes fv-ia-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modal-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin: 0 !important; gap: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-title { font-size: 1rem !important; line-height: 1.25 !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-close-button { background: #f9fafb !important; border: 1px solid #e5e7eb !important; border-radius: 50% !important; width: 2rem !important; height: 2rem !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; cursor: pointer !important; padding: 0 !important; flex-shrink: 0 !important; transition: all 0.2s !important; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-close-button:hover { background: #e5e7eb !important; color: #111827 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-description { font-size: 0.875rem !important; color: #374151 !important; margin: 0 !important; line-height: 1.625 !important; white-space: pre-wrap !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-ia-node-description { font-size: 0.875rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-empty { display: flex !important; align-items: center !important; justify-content: center !important; height: 200px !important; background-color: #f1f5f9 !important; color: #64748b !important; border: 2px dashed #cbd5e1 !important; border-radius: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-pie-container, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stacked-product, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-grouped-bar-product, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stacked-product, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792497446111-yjxgplq1g.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-1792497446111-yjxgplq1g.mobile-view .fv-bar-label, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-grouped-product-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-label, #fv-chart-1792497446111-yjxgplq1g.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-1792497446111-yjxgplq1g.mobile-view .fv-bar-container, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-cluster, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-container, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.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-1792497446111-yjxgplq1g.mobile-view .fv-x-axis-wrapper, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-x-axis-label-space, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-x-axis-chart-space, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-benchmark-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-dropdown-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-carousel-nav-btn, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-chart-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-chart-subhead, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-header, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-wrapper, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-vs, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-container, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792497446111-yjxgplq1g.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-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-dials-grid, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-dial-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792497446111-yjxgplq1g .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g .fv-stacked-product, #fv-chart-1792497446111-yjxgplq1g .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar-label, #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-bar-container, #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster { width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-label-space { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .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-1792497446111-yjxgplq1g .fv-stl-shop-all-logo, #fv-chart-1792497446111-yjxgplq1g .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792497446111-yjxgplq1g.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Overall Chart Title", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T11:57:26.111Z", "citation": "Side view of the Acer Googlebook 14", "keywords": [ "Image Annotation", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": []}{"version":2,"exportedAt":"2026-10-20T11:57:26.112Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Annotation","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Overall Chart Title","subhead":"Subhead to describe the test and what's being measured and why","caption":"Side view of the Acer Googlebook 14","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageAnnotationData":{"imageUrl":"https://cdn.mos.cms.futurecdn.net/jL9H4S6mTzZQyVQPHuUkM6.jpg","nodes":[{"id":"node-1792497270266","x":46,"y":38.54,"title":"Finger print scanner","description":"The power button includes a finger print scanner for biometric login."},{"id":"node-1792497310781","x":58.49,"y":37.57,"title":"360-degree hinges","description":"The hinges allow the screen of the Acer Googlebook 14 to flip back, turning it into a tablet-like device."},{"id":"node-1792497385349","x":10.31,"y":37.57,"title":"Keyboard","description":"The keys are large and comfortable to type on."}],"fullBleed":false}},"slides":[]}123Finger print scannerThe power button includes a finger print scanner for biometric login.
360-degree hingesThe hinges allow the screen of the Acer Googlebook 14 to flip back, turning it into a tablet-like device.
KeyboardThe keys are large and comfortable to type on.
Side view of the Acer Googlebook 14Explore window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792497446111-yjxgplq1g', false); }); } else { initialize('fv-chart-1792497446111-yjxgplq1g', false); } })();It’s the second lightest Googlebook, only beaten by the Asus Googlebook 14, which weighs in at just 2.2 lbs (1 kg). The body of the laptop uses a magnesium-aluminium alloy, which feels robust without being too heavy, so while the Acer Googlebook 14 feels thin and light, it also feels durable. You certainly wouldn’t feel worried about damaging it when taking it out and about with you.
While it’s not the lightest laptop I’ve ever tested, it feels comfortable to hold in one hand, and shouldn’t hurt your back if you’re carrying it around. The thin design does come with some drawbacks, namely with the port selection — you just get three USB-C ports and an audio jack. One of the USB-C ports is Thunderbolt 4, while the other two are slower USB 3.2 Gen 2 ports, so that means you’ll want to pay attention to which port you plug things into, especially if transfer speeds are particularly important.
To Acer’s credit, three USB-C ports are an improvement on the two ports a lot of similarly-priced thin and light laptops offer (such as the aforementioned MacBook Air, though both those USB-C ports are Thunderbolt 4). If you need to charge the Acer Googlebook 14, however, one of those USB-C ports will need to be sacrificed.
The screen is a 14-inch OLED touchscreen with a sharp resolution of 2880 x 1800 and an aspect ratio of 16:10 (so it’s a little taller than standard widescreen displays). It looks fantastic, and really helps give the Acer Googlebook 14 a premium feel. As a touchscreen, it’s nice and responsive, and it also means that when using Android apps (which you can install directly onto the Acer Googlebook 14) designed to be used with a touchscreen, they work really well. The bezels on either side of the screen are nice and thin, which gives the Acer Googlebook 14 a modern feel, while also maximizing screen size without making the laptop too bulky.
FutureFutureFutureFutureFutureFutureAt the top of the screen is a 5MP webcam with a physical privacy shutter that you can slide to turn off the camera, which is a reassuring feature. The keyboard feels nice and responsive, with a decent travel for each key when pressed. The keys are well spaced, so when typing quickly you can still accurately hit the keys you want. They are also backlit, so using the Acer Googlebook 14 in darker environments isn’t an issue.
There’s also a biometric fingerprint scanner included in the top-right corner of the keyboard for logging in quickly and securely. It works well, though it doesn’t feel quite as quick as the Touch ID button on modern MacBooks.
The Acer Googlebook 14 features a large glass touchpad that takes up around a third of the space below the keyboard, and it responds well to gestures.
On the back of the laptop lid is an understated Acer logo, along with the ‘Glowbar’, which is a thin horizontal line that lights up and changes color depending on what you’re using the Googlebook for. The Glowbar appears on all Googlebooks, though its placement on the lid varies (on the Acer Googlebook 14, it’s located in the corner opposite Acer’s logo).
(Image credit: Future)When you plug in the Googlebook, the bar can display the battery level, and it flashes different colors when using the built-in Gemini AI helper. It adds a bit of interesting color to what would otherwise be a rather plain dark rectangle, and while I like the idea of the Glowbar showing the battery level when it charges, it only does so briefly. Also, when using the Acer Googlebook 14, the screen will be open, which means the Glowbar is facing away from the user, so I’m not quite convinced how useful this feature will be (this is an issue with all Googlebooks, not just Acer’s).
What really makes the Acer Googlebook 14 stand apart from the other Googlebooks it launched alongside is that it’s the only one that has a 2-in-1 form factor. Not only can it be used as a traditional laptop, but the screen can be folded back, turning it into a tablet-like device. Because Googlebook OS can run Android apps, both natively and streamed from your Android smartphone, this could be a big selling point for the Acer Googlebook 14. Thanks to the thin design, the Acer Googlebook 14 doesn’t feel too chunky when used in tablet mode, though it’s thicker and heavier than a regular Android tablet.
Android apps I tried on the Acer Googlebook 14 looked fantastic thanks to the OLED screen, with Netflix and Instagram adjusting themselves quickly depending on if I was holding the screen vertically or horizontally. Google Chrome, the default web browser, also worked well, and holding the Acer Googlebook 14 vertically meant I could read webpages with a lot less scrolling.
There is a slightly strange issue, however. While all the apps I tried did indeed change their orientation depending on how I held the Acer Googlebook 14, the desktop screen didn’t change — it stayed in its landscape orientation, and that meant launching apps either from the desktop or the App Drawer (essentially, Googlebook OS’ answer to Windows’ Start menu, and will be familiar to most Android users) was rather clunky — you either had to rotate the Acer Googlebook 14 back into landscape mode to comfortably launch an app, or just try to launch it with the user interface at the wrong angle.
It's a weird omission — Windows 11 has no issue with rotating its entire interface when you rotate the screen it’s on, and I had been expecting Googlebook OS to do the same. I mentioned this to Acer, and it shared the following:
"Acer Googlebook 14 is the first convertible device to run the new Googlebook OS. For the initial launch, Google has chosen to lock the app tray/taskbar in landscape orientation, as its usage data for convertible devices indicates that landscape is the most commonly used orientation. For additional information and support, please refer to the Google Help Center”
This is a bit of an odd decision by Google — sure, there’s only one 2-in-1 Googlebook at the moment, but that’s still 25% of the currently available Googlebook market. Hopefully this changes soon, as it does make the Acer Googlebook 14’s major selling point less enticing. If I were Acer, I wouldn’t be too thrilled about that.
The 2-in-1 abilities of the Acer Googlebook 14 are thanks to the robust 360-degree hinges that hold the two halves of the laptop together, and they feel sturdy and secure. I have no concerns about these handling thousands of openings and closings throughout the lifespan of the device.
Acer Googlebook 14 review: Specs
Acer Googlebook 14 review configuration
Acer Googlebook 14 max configuration
Operating System
Googlebook OS
Googlebook OS
Processor
Intel Core Ultra 5 processor 325
Intel Core Ultra 7 processor 355
Graphics
Intel Graphics
Intel Graphics
Display
14-inch OLED WQXGA+ (2880 × 1800), 16:10 touch display; Corning Gorilla Glass; 500 nits; 100% DCI-P3; VESA Certified DisplayHDR True Black; EyeSafe 2.0; USI 2.0 Stylus ready
14-inch OLED WQXGA+ (2880 × 1800), 16:10 touch display; Corning Gorilla Glass; 500 nits; 100% DCI-P3; VESA Certified DisplayHDR True Black; EyeSafe 2.0; USI 2.0 Stylus ready
Memory
16 GB LPDDR5X
32 GB LPDDR5X
Storage
512 GB PCIe Gen 4 NVMe SSD
512 GB PCIe Gen 4 NVMe SSD
Battery Life
71 Wh 4-cell Li-ion; Fast-charging capability
71 Wh 4-cell Li-ion; Fast-charging capability
Ports
1× Thunderbolt 4; 2× USB 3.2 Gen 2 Type-C (10 Gbps, DisplayPort, Power Delivery); 3.5 mm audio jack
1× Thunderbolt 4; 2× USB 3.2 Gen 2 Type-C (10 Gbps, DisplayPort, Power Delivery); 3.5 mm audio jack
Audio & Camera
DTS Audio with dual upward-facing Acer Ultra Boost Stereo speakers; triple digital microphone array; 5 MP webcam with privacy shutter
DTS Audio with dual upward-facing Acer Ultra Boost Stereo speakers; triple digital microphone array; 5 MP webcam with privacy shutter
Wireless
Wi-Fi 7; Bluetooth 6.0
Wi-Fi 7; Bluetooth 6.0
Dimensions & Weight
312 (W) × 222.9 (D) × 13.9 (H) mm; 1.14 kg (2.51 lbs)
312 (W) × 222.9 (D) × 13.9 (H) mm; 1.14 kg (2.51 lbs)
Acer Googlebook 14 review: PerformanceGoogle has been keen to highlight that Googlebooks, like the Acer Googlebook 14, are not simply fancy Chromebooks, but an entirely new product category, and I have to say, from my initial impressions, the Acer Googlebook 14 and its fellow Googlebooks are certainly ambitious. The hardware is excellent, and the model Acer sent me to review features a cutting-edge Intel Core Ultra 5 325 processor and 16GB of LPDDR5X memory, plus a 512GB SSD.
That’s the kind of spec that would do well in a Windows 11 laptop, and Googlebook OS is supposed to be far more lightweight (being partially built on Android), so performance should be even better.
It certainly feels fast and responsive when opening apps and browsing the internet. Finding and installing apps via the Play Store is quick and easy, and familiar to anyone who’s used an Android device. Apps and games that have interfaces designed for desktop use (rather than simply being the Android mobile app in a window) have been tagged, so you should know if an app will work particularly well with the Acer Googlebook 14, which is a nice touch.
@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-1792486551861-y8k2kt4bk *, #fv-chart-1792486551861-y8k2kt4bk *:before, #fv-chart-1792486551861-y8k2kt4bk *:after, #fv-chart-1792486551861-y8k2kt4bk-slideshow *, #fv-chart-1792486551861-y8k2kt4bk-slideshow *:before, #fv-chart-1792486551861-y8k2kt4bk-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792486551861-y8k2kt4bk, #fv-chart-1792486551861-y8k2kt4bk-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792486551861-y8k2kt4bk { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792486551861-y8k2kt4bk.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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792486551861-y8k2kt4bk-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-1792486551861-y8k2kt4bk-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-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn.disabled, #fv-chart-1792486551861-y8k2kt4bk-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-1792486551861-y8k2kt4bk-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792486551861-y8k2kt4bk-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-1792486551861-y8k2kt4bk-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792486551861-y8k2kt4bk .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk.mobile-view .fv-pie-container, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stacked-product, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-grouped-bar-product, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stacked-product, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792486551861-y8k2kt4bk.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-1792486551861-y8k2kt4bk.mobile-view .fv-bar-label, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-grouped-product-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-label, #fv-chart-1792486551861-y8k2kt4bk.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-1792486551861-y8k2kt4bk.mobile-view .fv-bar-container, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-cluster, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-container, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.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-1792486551861-y8k2kt4bk.mobile-view .fv-x-axis-wrapper, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-x-axis-label-space, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-x-axis-chart-space, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-benchmark-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-dropdown-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-carousel-nav-btn, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-chart-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-chart-subhead, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-header, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-wrapper, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-vs, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-container, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792486551861-y8k2kt4bk.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-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-dials-grid, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-dial-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792486551861-y8k2kt4bk .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-product, #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar-label, #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-bar-container, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster { width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-label-space { display: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .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-1792486551861-y8k2kt4bk .fv-stl-shop-all-logo, #fv-chart-1792486551861-y8k2kt4bk .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792486551861-y8k2kt4bk.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Benchmarks", "description": "How the Acer Googlebook 14 performed in our suite of benchmark tests", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T08:55:51.861Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Acer Googlebook 14", "Crossmark: Overall", "Crossmark: Productivity", "Crossmark: Creativity", "Crossmark: Responsiveness", "Geekbench 6.7 (Single-core)", "Geekbench 6.7 (Multi-core)", "Geekbench 7.0 (Single-core)", "Geekbench 7.0 (Multi-core)", "Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)", "Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)", "Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)", "Jetstream 2", "WebXPRT 4", "3DMark: Wild Life Extreme", "3DMark: Solar Bay", "3DMark: Steel Nomad Light", "Crossmark", "Geekbench", "Geekbench AI", "Web browsing", "3DMark", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Overall", "value": 3647, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Productivity", "value": 4406, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Creativity", "value": 1788, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Responsiveness", "value": 15038, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 6.7 (Single-core)", "value": 2465, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 6.7 (Multi-core)", "value": 9960, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 7.0 (Single-core)", "value": 2427, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 7.0 (Multi-core)", "value": 11416, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)", "value": 1801, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)", "value": 1847, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)", "value": 2332, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Jetstream 2", "value": 444, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – WebXPRT 4", "value": 328, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – 3DMark: Wild Life Extreme", "value": 4068, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – 3DMark: Solar Bay", "value": 9071, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – 3DMark: Steel Nomad Light", "value": 1780, "unitText": "Score" } ]}{"version":2,"exportedAt":"2026-10-20T08:55:51.861Z","state":{"data":[{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Fire Strike","value":26767,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Time Spy","value":12309,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Steel Nomad","value":2758,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Port Royal","value":7687,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Geekbench 6.5 (Multi-core)","value":16655,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Geekbench 6.5 (Single-core)","value":2852,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"PCMark 10","value":6827,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Overall","value":1880,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Productivity","value":1669,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Creativity","value":2275,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Responsiveness","value":1514,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Fire Strike","value":13987,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Time Spy","value":4270,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Steel Nomad","value":1413,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Port Royal","value":4300,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Geekbench 6.5 (Multi-core)","value":16837,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Geekbench 6.5 (Single-core)","value":2880,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"PCMark 10","value":6250,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Overall","value":2125,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Productivity","value":1906,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Creativity","value":2567,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Responsiveness","value":1670,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Fire Strike","value":13314,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Time Spy","value":6533,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Steel Nomad","value":2300,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Port Royal","value":4500,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Geekbench 6.5 (Multi-core)","value":16927,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Geekbench 6.5 (Single-core)","value":2867,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"PCMark 10","value":8000,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Overall","value":1840,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Productivity","value":1619,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Creativity","value":2258,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Responsiveness","value":1460,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 6.7 (Single-core)","value":2465,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 6.7 (Multi-core)","value":9960,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 7.0 (Single-core)","value":2427,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 7.0 (Multi-core)","value":11416,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","value":1801,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","value":1847,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)","value":2332,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Overall","value":3647,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Productivity","value":4406,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Creativity","value":1788,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Responsiveness","value":15038,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Jetstream 2","value":444,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"WebXPRT 4","value":328,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"3DMark: Wild Life Extreme","value":4068,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"3DMark: Solar Bay","value":9071,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"3DMark: Steel Nomad Light","value":1780,"unit":"Score","testDate":"","color":"","site":"TechRadar"}],"products":["Samsung Galaxy Book6 Ultra","Samsung Galaxy Book6 Pro","Dell XPS 14 (2026)","Acer Googlebook 14"],"attributes":["3DMark: Fire Strike","3DMark: Time Spy","3DMark: Steel Nomad","3DMark: Port Royal","Geekbench 6.5 (Multi-core)","Geekbench 6.5 (Single-core)","PCMark 10","Crossmark: Overall","Crossmark: Productivity","Crossmark: Creativity","Crossmark: Responsiveness","Geekbench 6.7 (Single-core)","Geekbench 6.7 (Multi-core)","Geekbench 7.0 (Single-core)","Geekbench 7.0 (Multi-core)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)","Jetstream 2","WebXPRT 4","3DMark: Wild Life Extreme","3DMark: Solar Bay","3DMark: Steel Nomad Light"],"selectedProducts":["Acer Googlebook 14"],"selectedPrimaryProduct":"Acer Googlebook 14","selectedAttributes":["Crossmark: Overall","Crossmark: Productivity","Crossmark: Creativity","Crossmark: Responsiveness","Geekbench 6.7 (Single-core)","Geekbench 6.7 (Multi-core)","Geekbench 7.0 (Single-core)","Geekbench 7.0 (Multi-core)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)","Jetstream 2","WebXPRT 4","3DMark: Wild Life Extreme","3DMark: Solar Bay","3DMark: Steel Nomad Light"],"productColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"},{"productName":"Samsung Galaxy Book6 Pro","color":"#E8238C"},{"productName":"Dell XPS 14 (2026)","color":"#5DA8D4"},{"productName":"Acer Googlebook 14","color":"#F06EAF"}],"initialProductColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"},{"productName":"Samsung Galaxy Book6 Pro","color":"#E8238C"},{"productName":"Dell XPS 14 (2026)","color":"#5DA8D4"},{"productName":"Acer Googlebook 14","color":"#F06EAF"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Crossmark: Overall","Crossmark: Productivity","Crossmark: Creativity","Crossmark: Responsiveness"]},{"name":"Group 2","attributes":["Geekbench 6.7 (Single-core)","Geekbench 6.7 (Multi-core)","Geekbench 7.0 (Single-core)","Geekbench 7.0 (Multi-core)"]},{"name":"Group 3","attributes":["Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)"]},{"name":"Group 4","attributes":["Jetstream 2","WebXPRT 4"]},{"name":"Group 5","attributes":["3DMark: Wild Life Extreme","3DMark: Solar Bay","3DMark: Steel Nomad Light"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Carousel","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Benchmarks","subhead":"How the Acer Googlebook 14 performed in our suite of benchmark tests","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"Crossmark","grouped-bar-Group 2":"Geekbench","grouped-bar-Group 3":"Geekbench AI","grouped-bar-Group 4":"Web browsing","grouped-bar-Group 5":"3DMark"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}BenchmarksHow the Acer Googlebook 14 performed in our suite of benchmark tests
< PrevCrossmarkNext >Crossmark: Overall3647Crossmark: Productivity4406Crossmark: Creativity1788Crossmark: Responsiveness1503805,00010,00015,00020,000ScoreCrossmark DataProductCrossmark: Overall (Score)Crossmark: Productivity (Score)Crossmark: Creativity (Score)Crossmark: Responsiveness (Score)Acer Googlebook 1436474406178815038Geekbench 6.7 (Single-core)2465Geekbench 6.7 (Multi-core)9960Geekbench 7.0 (Single-core)2427Geekbench 7.0 (Multi-core)1141603,7507,50011,25015,000ScoreGeekbench DataProductGeekbench 6.7 (Single-core) (Score)Geekbench 6.7 (Multi-core) (Score)Geekbench 7.0 (Single-core) (Score)Geekbench 7.0 (Multi-core) (Score)Acer Googlebook 1424659960242711416Geekbench AI 1.7: TenssorFlow Lite / CPU (Single Precision Score)1801Geekbench AI 1.7: TenssorFlow Lite / CPU (Half Precision Score)1847Geekbench AI 1.7: TenssorFlow Lite / CPU (Quantized Score)233207501,5002,2503,000ScoreGeekbench AI DataProductGeekbench AI 1.7: TenssorFlow Lite / CPU (Single Precision Score) (Score)Geekbench AI 1.7: TenssorFlow Lite / CPU (Half Precision Score) (Score)Geekbench AI 1.7: TenssorFlow Lite / CPU (Quantized Score) (Score)Acer Googlebook 14180118472332Jetstream 2444WebXPRT 43280150300450600ScoreWeb browsing DataProductJetstream 2 (Score)WebXPRT 4 (Score)Acer Googlebook 144443283DMark: Wild Life Extreme40683DMark: Solar Bay90713DMark: Steel Nomad Light178002,5005,0007,50010,000Score3DMark DataProduct3DMark: Wild Life Extreme (Score)3DMark: Solar Bay (Score)3DMark: Steel Nomad Light (Score)Acer Googlebook 144068907117801 of 5 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792486551861-y8k2kt4bk', false); }); } else { initialize('fv-chart-1792486551861-y8k2kt4bk', false); } })();That said, when I launched Monument Valley, a popular Android game that supposedly has been updated to work well on Googlebooks, I first had to map touch controls to the keyboard in a rather clunky and confusing manner (and as far as I know, all Googlebooks will come with touchscreens).
Skipping through the mapping process took me to the game, and I found using the touchpad and mouse cursor to interact with the game worked absolutely fine, so I’m not too sure what the point of the confusing mapping process is. Also, despite being labelled as being designed for desktop use, the game initially launched in a window in portrait orientation — so essentially, just showing the Android app. Even maximizing the app window didn’t make it go full screen.
I then tried the Acer Googlebook 14 in tablet mode (thinking that would be ideal for a mobile game), but for some reason, the auto-rotate function didn’t work, even when I toggled it on and off. Then, all of a sudden, it did work, though it asked me to restart the app ‘so that it looks better on your screen’. I did (luckily not losing any progress), and the Acer Googlebook 14 acted as it should. However, the game didn’t take up the entire screen, even in fullscreen mode — instead, it had the (admittedly larger) app in the middle of the screen, then large black borders around the edges. Restarting the app again did give me the full-screen experience, but this is far from a slick and premium experience.
(Image credit: Future)Now, I want to be clear that these issues are related to the software, so it’s not really Acer’s fault. Googlebook OS is clearly still in its early days, and while I didn’t experience any major crashes, there’s still a lot of work to be done by Google, and unfortunately it means that the main selling point of the Acer Googlebook 14 — its 2-in-1 design — isn’t as impressive as it should be.
This also extends to some of the more interesting promises of Googlebook OS. The operating system is designed to be familiar for Android users, and aims to give a similarly slick experience that iPhone users get when using a Mac, such as screen mirroring, seamless switching between devices, and seeing messages your phone receives on your laptop’s display.
When Google launched the Googlebooks a month or so ago, I was shown how the apps on a connected Android phone could be opened on a Googlebook without any installation. Another demo showed someone using an app on their phone, then quickly switching to their Googlebook to continue using the same app where they left off. It was impressive, and something that, as an Android user, I’d been wanting for years. Only Samsung came close, and even that was a bit clunky (and you needed to have a Samsung phone and Samsung laptop).
So, I was disappointed when I just could not get the Acer Googlebook 14 to show the apps on my Samsung Galaxy S24 Ultra. Instead, I was given a QR code to scan, which opened up the ‘Cross-device services’ settings on my smartphone. These were already enabled, and it wasn’t clear what I needed to do. Again, it was far from the slick experience I (and other Android users) had been promised.
After speaking to Acer, I was pointed to a Google support page which announced that Googlebook OS support for Samsung phones has now begun to roll out, and that phones need to run Android 17 (and in the case of Samsung smartphones, also run One UI 9.0). My phone was actually on a slightly older version, but the One UI 9.0 update was waiting to be installed, which I did. I was then prompted (after scanning the QR once again) to update Cross-Device Services. Progress!
It took a while, but I was then able to see my phone’s apps on the Acer Googlebook 14. Clicking on an app brought it up on the screen with a desktop-like interface, though it took a few seconds. This is because the Acer Googlebook 14 is streaming the app wirelessly from your phone, so there’s a little delay, but then you get the app in the exact state you left it on your phone.
With the phone properly connected, you can also view its files within the file explorer app on the Acer Googlebook 14, as well as files saved on the Googlebook’s internal drive, and any Google Drive accounts you have as well. This is another nice bit of interaction between Googlebook OS and your Android device, though again there’s a bit of a delay as the Googlebook streams files from your phone.
Having your Google Drive folders within the file explorer (called ‘Files’) app is another nice touch — as long as you use Google Drive. As an Android user, there’s a good chance that you do use Google Drive, especially as new owners of Googlebooks get a year’s subscription to Google AI Pro for free, which includes 5TB of storage. I actually mainly use OneDrive, and I was pleased to see that once I had logged into the OneDrive app on the Acer Googlebook 14, the files I store on Microsoft’s rival cloud storage service also appeared within the Files app.
So, the Googlebook OS and Android ecosystem feels like it needs tightening up a bit, as this is still early days, but there’s a lot of potential here, and if Google can nail it, it will make Googlebooks like the Acer Googlebook 14 very attractive to people who use Android smartphones.
On-device AI is a big selling point of Googlebooks, and with the included Google AI Pro subscription, you get access to Gemini Argon, Google’s latest AI model. I had a play around with it on the Acer Googlebook 14, asking it to help me code a complex musical plugin for Ableton Live 11, and it was quick and helpful, explaining its process and offering suggestions and advice. Even with Google AI Pro, I did use up my current allowance in around 10 minutes. At least it resets every five hours.
The ’Magic Cursor’ feature is another key selling point (according to Google) of the Googlebook OS. Once you’ve turned it on, you can shake the mouse cursor, and Gemini can view what’s on your screen. You can highlight parts of the screen and ask Gemini questions about it. I tried it while I had a photo open, and it offered to generate digital art based on the photo, or come up with gift ideas for the people pictured.
It is similar to the ‘Click to Do’ feature of Windows 11, but that takes a screenshot of your screen, then offers limited ways to interact with it. The Magic Cursor feature feels much more flexible, as you’re interacting with live elements of the screen, and highlights the benefits of Googlebook OS being built from the ground up to support AI, rather than having AI awkwardly pasted onto an existing operating system, as with Windows 11.
Overall, the day-to-day performance of the Acer Googlebook 14 was very good, though the early nature of Googlebook OS means some features aren’t quite as slick as I’d have hoped.
That said, there’s a lot of potential here, and the integration for Android smartphones shows a lot of promise. Hopefully Google will continue to update Googlebook OS regularly — though there’s always the worry with Google that it will abruptly drop support and lose interest in any product that it feels isn’t selling well.View Deal
Acer Googlebook 14 review: Battery Life@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-1792487841164-42y2kup0b *, #fv-chart-1792487841164-42y2kup0b *:before, #fv-chart-1792487841164-42y2kup0b *:after, #fv-chart-1792487841164-42y2kup0b-slideshow *, #fv-chart-1792487841164-42y2kup0b-slideshow *:before, #fv-chart-1792487841164-42y2kup0b-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792487841164-42y2kup0b, #fv-chart-1792487841164-42y2kup0b-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792487841164-42y2kup0b { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792487841164-42y2kup0b.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792487841164-42y2kup0b.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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792487841164-42y2kup0b-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-1792487841164-42y2kup0b-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-1792487841164-42y2kup0b-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn.disabled, #fv-chart-1792487841164-42y2kup0b-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-1792487841164-42y2kup0b-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792487841164-42y2kup0b-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-1792487841164-42y2kup0b-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792487841164-42y2kup0b .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792487841164-42y2kup0b .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792487841164-42y2kup0b .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792487841164-42y2kup0b .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792487841164-42y2kup0b .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar-row, #fv-chart-1792487841164-42y2kup0b .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792487841164-42y2kup0b .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792487841164-42y2kup0b .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b.mobile-view .fv-pie-container, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stacked-product, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-grouped-bar-product, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stacked-product, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792487841164-42y2kup0b.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-1792487841164-42y2kup0b.mobile-view .fv-bar-label, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-grouped-product-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-label, #fv-chart-1792487841164-42y2kup0b.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-1792487841164-42y2kup0b.mobile-view .fv-bar-container, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-cluster, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-container, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.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-1792487841164-42y2kup0b.mobile-view .fv-x-axis-wrapper, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-x-axis-label-space, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-x-axis-chart-space, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-benchmark-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-dropdown-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-carousel-nav-btn, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-chart-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-chart-subhead, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-header, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-wrapper, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-vs, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-container, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792487841164-42y2kup0b.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-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-dials-grid, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-dial-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792487841164-42y2kup0b .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-row, #fv-chart-1792487841164-42y2kup0b .fv-stacked-product, #fv-chart-1792487841164-42y2kup0b .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar-label, #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-bar-container, #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster { width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-label-space { display: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792487841164-42y2kup0b .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .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-1792487841164-42y2kup0b .fv-stl-shop-all-logo, #fv-chart-1792487841164-42y2kup0b .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792487841164-42y2kup0b.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Battery life results", "description": "How long does the battery last?", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T09:17:21.164Z", "citation": "Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.", "keywords": [ "Acer Googlebook 14", "Battery life web surfing test", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Battery life web surfing test", "value": 10.416666666666666, "unitText": "hours, mins" } ]}{"version":2,"exportedAt":"2026-10-20T09:17:21.164Z","state":{"data":[{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Battery life video test","value":15.183333333333334,"unit":"hours, mins","displayValue":"15:11","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Battery life video test","value":14.866666666666667,"unit":"hours, mins","displayValue":"14:52","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Battery life video test","value":12.316666666666666,"unit":"hours, mins","displayValue":"12:19","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Battery life web surfing test","value":10.416666666666666,"unit":"hours, mins","displayValue":"10:25","testDate":"","color":"","site":"TechRadar"}],"products":["Samsung Galaxy Book6 Ultra","Samsung Galaxy Book6 Pro","Dell XPS 14 (2026)","Acer Googlebook 14"],"attributes":["Battery life video test","Battery life web surfing test"],"selectedProducts":["Acer Googlebook 14"],"selectedPrimaryProduct":"Acer Googlebook 14","selectedAttributes":["Battery life web surfing test"],"productColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"},{"productName":"Samsung Galaxy Book6 Pro","color":"#E8238C"},{"productName":"Dell XPS 14 (2026)","color":"#5DA8D4"},{"productName":"Acer Googlebook 14","color":"#F06EAF"}],"initialProductColors":[{"productName":"Battery life video test","color":"#2E6E93"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Battery life results","subhead":"How long does the battery last?","caption":"Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"versus-chart":"Versus Comparison"},"xAxisLabelOverrides":{},"subheadOverrides":{"versus-chart":"How long does the battery last?"},"captionOverrides":{"versus-chart":"Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off."},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}Battery life resultsHow long does the battery last?
Battery life web surfing testAcer Googlebook 1410:25Battery life web surfing test DataProductValueAcer Googlebook 1410.416666666666666Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off. window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792487841164-42y2kup0b', false); }); } else { initialize('fv-chart-1792487841164-42y2kup0b', false); } })();Because Googlebook OS has been designed as a lightweight operating system, similar to Chrome OS, I was expecting very good results from the Acer Googlebook 14’s battery.
Acer suggests that it will last up to 14 hours for local video playback and up to 16 hours of web browsing. In our battery benchmark tests, which replicated moderate web browsing activity, the Acer Googlebook 14 in fact lasted for just under 10 and a half hours.
This is below what Acer claims, but it’s not bad — expect the Acer Googlebook 14 to last well over a single work or school day on battery, and with some tweaks you should be able to get a few more hours out of the battery.
However, we’re increasingly seeing laptops with battery lives hovering around 20 hours these days, so the 10 hour battery life of the Acer Googlebook 14 isn’t as impressive as it would have been a few years ago.View Deal
Should I buy the Acer Googlebook 14?Buy the Acer Googlebook 14 if...✅ You have an Android smartphone and need a new laptop
The Acer Googlebook 14 works really well with Android smartphones thanks to some great features of Googlebook OS, such as streaming apps from your phone to the laptop. Just check compatibility before you buy.
✅ You were thinking of buying an Android tablet as well
Thanks to its 2-in-1 design and ability to run Android apps natively, the Acer Googlebook 14 offers a great way to save a bit of money and have a device that can act as both a laptop and an Android tablet.
✅ You’re all-in on Google’s AI ambitions
Google’s Gemini AI is tightly integrated into the Googlebook OS software, so if you already use it a lot, then you’ll love the Acer Googlebook 14.
❌ You rely on a certain Windows or macOS app
While Googlebooks can run web apps and thousands of Android apps, it can’t run Windows or macOS apps. In the future, devs might make Googlebook OS-compatible versions, but that’s not guaranteed, so if there’s a critical app you rely on, you should look elsewhere.
❌ You have an iPhone
So many of the Acer Googlebook 14’s benefits are tied to having an Android phone, and while there are some features that work with iPhones, you’ll be missing out on a lot — and you’d be much better off getting a MacBook, anyway.
I used the Acer Googlebook 14 for several weeks, for all manner of tasks, including writing some of this review on it. During that time, I also connected my Android smartphone to it to make full use of the ecosystem. I ran a variety of apps and games on the Acer Googlebook 14 during my time testing it.
I also attended Google’s launch event in London, as well as Acer’s own event, for deep dives into the technology and features. I’ve been reviewing laptops, including Chromebooks, for nearly 20 years, and have used that experience to inform my review.
The Hisense U6SF Pro felt like a budget TV reaching for the mid-range when I first unboxed it. After spending some time with it, I think that impression stands. I don’t mean that in a derogatory way, either. If you had $650 for a TV, getting the 65-inch size of the Hisense U6SF Pro is certainly worth it.
That price tag gets you a 4K resolution with a native 144Hz refresh rate, all the HDR and spatial audio support one could want, a Fire TV interface, and Alexa+ built-in. And just to clear the air, the Hisense U6SF Pro does have appreciable if somewhat hidden upgrades over the non-Pro version. The Pro version is a couple pounds heavier, comes with a built-in subwoofer (and has double the speaker wattage) and WiFi 6, and has the pro version of AMD FreeSync Premium and support for DTS Virtual:X.
The Hisense U6SF Pro has most of the bonafides of the best gaming TVs, such as two HDMI 2.1 ports for up to 4K@144Hz refresh rate passthrough support and the aforementioned AMD FreeSync Premium Pro, though I do wish there was a game-specific bar or menu. I can see an argument for putting this model among the best TVs for the price, though it still comes with some compromises, such as some vignetting all along the bottom of the screen and a lack of detail in the shadows.
The Hisense U6SF Pro showing off its colors with a Youtube screen test (Image credit: Future / James Holland)Hisense U6SF Pro review: Price and release dateThe Hisense U6SF and U6SF Pro, along with the Hisense U7, hit the market in March of 2026. While the listed MSRP of the U6SF Pro is much higher on retail sites like Amazon and Best Buy, where the TV’s “value” at 65 inches is listed at $1,099.99, the actual and consistent prices listed above are what I consider the real prices and are what you’ll actually pay.
With a price range of $499.99 for the 55-inch to $2,299.99 for the 100-inch, the Hisense U6SF Pro really falls right into that area between budget TVs and more mid-range models (most TVs within a couple hundred dollars above or below a grand). And it comes in just about every size one could need, unless you’re looking for a smaller TV. The 55-inch model is the smallest it comes in.
Hisense U6SF Pro Series MiniLED TV review: SpecsScreen type
Hi-QLED Mini-LED
Refresh rate
144Hz
HDR support
Dolby Vision, Dolby Vision IQ, HDR10, HDR10+, HDR10+ Adaptive, HLG
Audio support
Dolby Atmos + DTS Virtual X, Bluetooth Audio
Smart TV
Fire TV with Alexa+
HDMI ports
2 HDMI 2.1 ports(4K@144Hz), 2 HDMI 2.0 (4K @ 60Hz)
Built-in tuner
ATSC 3.0
Hisense U6SF Pro Series MiniLED TV review: Benchmark results@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper *, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper *:before, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper *:after, #fv-chart-1792492395285-jtpd1lwb2-slideshow *, #fv-chart-1792492395285-jtpd1lwb2-slideshow *:before, #fv-chart-1792492395285-jtpd1lwb2-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792492395285-jtpd1lwb2-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-1792492395285-jtpd1lwb2-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-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn.disabled, #fv-chart-1792492395285-jtpd1lwb2-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-1792492395285-jtpd1lwb2-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792492395285-jtpd1lwb2-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-1792492395285-jtpd1lwb2-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-dials-grid, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-dial-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }[{ "@context": "https://schema.org", "@type": "Dataset", "name": "Brightness measurements", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "HDR Filmmaker Mode (10% window)", "HDR Standard Mode (10% window)", "SDR Filmmaker Mode (10% window)", "SDR Standard Mode (10% window)", "HDR Filmmaker Mode (Fullscreen)", "HDR Standard Mode (Fullscreen)", "HDR Filmmaker Mode", "HDR Standard", "SDR Filmmaker Mode", "SDR Standard", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Filmmaker Mode (10% window)", "value": 1265, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Filmmaker Mode (Fullscreen)", "value": 713, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Filmmaker Mode (10% window)", "value": 2866, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Filmmaker Mode (Fullscreen)", "value": 793, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Filmmaker Mode (10% window)", "value": 820, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Filmmaker Mode (Fullscreen)", "value": 373, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Standard Mode (10% window)", "value": 1033, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Standard Mode (Fullscreen)", "value": 708, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Standard Mode (10% window)", "value": 2891, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Standard Mode (Fullscreen)", "value": 782, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Standard Mode (10% window)", "value": 841, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Standard Mode (Fullscreen)", "value": 390, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – SDR Filmmaker Mode (10% window)", "value": 358, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – SDR Filmmaker Mode (10% window)", "value": 185, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – SDR Filmmaker Mode (10% window)", "value": 434, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – SDR Standard Mode (10% window)", "value": 788, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – SDR Standard Mode (10% window)", "value": 1994, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – SDR Standard Mode (10% window)", "value": 876, "unitText": "nits" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "HDR color gamut", "description": "Closer to 100% is better. Taken using a colorimeter and test pattern generator.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "UHDA-P3", "BT.2020", "HDR Filmmaker Mode", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – UHDA-P3", "value": 96.1, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – BT.2020", "value": 75.1, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U7 – UHDA-P3", "value": 97.3, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U7 – BT.2020", "value": 82.7, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – UHDA-P3", "value": 96.9, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – BT.2020", "value": 80.6, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Picture accuracy", "description": "A lower score is better. Taken using a colorimeter and test pattern generator.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "Delta-E", "SDR Delta-E", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – Delta-E", "value": 1.5, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U7 – Delta-E", "value": 3, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – Delta-E", "value": 2.5, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Input lag", "description": "Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "4K 60Hz", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – 4K 60Hz", "value": 13.2, "unitText": "ms" }, { "@type": "PropertyValue", "name": "Hisense U7 – 4K 60Hz", "value": 9.8, "unitText": "ms" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – 4K 60Hz", "value": 9.3, "unitText": "ms" } ]}]{"version":2,"exportedAt":"2026-10-20T10:33:15.286Z","state":{"data":[{"productName":"Hisense U6SF Pro","attribute":"4K 60Hz","value":13.2,"unit":"ms","site":"TechRadar"},{"productName":"Hisense U7","attribute":"4K 60Hz","value":9.8,"unit":"ms","site":"TechRadar"},{"productName":"Roku Pro Series (2025)","attribute":"4K 60Hz","value":9.3,"unit":"ms","site":"TechRadar"}],"products":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"attributes":["4K 60Hz"],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[{"id":"slide-1792492232431","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["HDR Filmmaker Mode (10% window)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (Fullscreen)"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["HDR Filmmaker Mode (10% window)","HDR Filmmaker Mode (Fullscreen)"]},{"name":"Group 2","attributes":["HDR Standard Mode (10% window)","HDR Standard Mode (Fullscreen)"]},{"name":"Group 3","attributes":["SDR Filmmaker Mode (10% window)"]},{"name":"Group 4","attributes":["SDR Standard Mode (10% window)"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Dropdown","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Brightness measurements","subhead":"Subhead to describe the test and what's being measured and why","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792492291117","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["UHDA-P3","BT.2020"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["UHDA-P3","BT.2020"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"HDR color gamut","subhead":"Closer to 100% is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792492346796","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["Delta-E"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Picture accuracy","subhead":"A lower score is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792492395284","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["4K 60Hz"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}}]}Previous1 / 4NextBrightness measurementsHDR Filmmaker ModeHDR StandardSDR Filmmaker ModeSDR StandardHisense U6SF ProHDR Filmmaker Mode (10% window)1265HDR Filmmaker Mode (Fullscreen)713Hisense U7HDR Filmmaker Mode (10% window)2866HDR Filmmaker Mode (Fullscreen)793Roku Pro Series (2025)HDR Filmmaker Mode (10% window)820HDR Filmmaker Mode (Fullscreen)37307501,5002,2503,000nitsHDR Filmmaker Mode DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Hisense U6SF Pro1265713Hisense U72866793Roku Pro Series (2025)820373Hisense U6SF ProHDR Standard Mode (10% window)1033HDR Standard Mode (Fullscreen)708Hisense U7HDR Standard Mode (10% window)2891HDR Standard Mode (Fullscreen)782Roku Pro Series (2025)HDR Standard Mode (10% window)841HDR Standard Mode (Fullscreen)39007501,5002,2503,000nitsHDR Standard DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Hisense U6SF Pro1033708Hisense U72891782Roku Pro Series (2025)841390Hisense U6SF ProSDR Filmmaker Mode (10% window)358Hisense U7SDR Filmmaker Mode (10% window)185Roku Pro Series (2025)SDR Filmmaker Mode (10% window)4340150300450600nitsSDR Filmmaker Mode DataProductSDR Filmmaker Mode (10% window) (nits)Hisense U6SF Pro358Hisense U7185Roku Pro Series (2025)434Hisense U6SF ProSDR Standard Mode (10% window)788Hisense U7SDR Standard Mode (10% window)1994Roku Pro Series (2025)SDR Standard Mode (10% window)87605001,0001,5002,000nitsSDR Standard DataProductSDR Standard Mode (10% window) (nits)Hisense U6SF Pro788Hisense U71994Roku Pro Series (2025)876HDR color gamutCloser to 100% is better. Taken using a colorimeter and test pattern generator.
Hisense U6SF ProUHDA-P396.1BT.202075.1Hisense U7UHDA-P397.3BT.202082.7Roku Pro Series (2025)UHDA-P396.9BT.202080.60255075100HDR Filmmaker Mode DataProductUHDA-P3 ()BT.2020 ()Hisense U6SF Pro96.175.1Hisense U797.382.7Roku Pro Series (2025)96.980.6Picture accuracyA lower score is better. Taken using a colorimeter and test pattern generator.
SDR Delta-EHisense U6SF Pro1.5Hisense U73Roku Pro Series (2025)2.50123SDR Delta-E DataProductValueHisense U6SF Pro1.5Hisense U73Roku Pro Series (2025)2.5Input lagLower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.
4K 60HzHisense U6SF Pro13.2Hisense U79.8Roku Pro Series (2025)9.303.757.511.2515ms4K 60Hz DataProductValueHisense U6SF Pro13.2Hisense U79.8Roku Pro Series (2025)9.3 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (true) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var currentSlideIndex = 0; var slides = slideshowContainer.querySelectorAll('.fv-slide'); var counter = slideshowContainer.querySelector('.fv-slide-counter'); var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev'); var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next'); var dropdown = slideshowContainer.querySelector('.fv-slideshow-select'); function updateControls(index) { if (counter) counter.textContent = (index + 1) + ' / ' + slides.length; if (dropdown) dropdown.value = index; if (prevBtn) { if (index === 0) prevBtn.classList.add('disabled'); else prevBtn.classList.remove('disabled'); } if (nextBtn) { if (index === slides.length - 1) nextBtn.classList.add('disabled'); else nextBtn.classList.remove('disabled'); } } function showSlide(index) { if (index < 0) return; if (index >= slides.length) return; currentSlideIndex = index; slides.forEach(function(slide, i) { slide.style.display = i === index ? 'block' : 'none'; if (i === index) { var chartEl = slide.querySelector('.fv-chart-wrapper'); if (chartEl) { fvLocalAnimate(chartEl); } } }); updateControls(currentSlideIndex); } if (prevBtn) { prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); }); } if (nextBtn) { nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); }); } if (dropdown) { dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); }); } updateControls(currentSlideIndex); if (slides.length > 0) { var firstChart = slides[0].querySelector('.fv-chart-wrapper'); if (firstChart) { setTimeout(function() { fvLocalAnimate(firstChart); }, 100); } } } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792492395285-jtpd1lwb2', true); }); } else { initialize('fv-chart-1792492395285-jtpd1lwb2', true); } })(); The Hisense U6SF Pro does a decent job with blooming as showcased by this scene from the movie Soul (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: FeaturesLet’s get the basics in terms of features out of the way. The Hisense U6SF Pro supports the litany of HDR formats one would need including Dolby Vision IQ. It also comes with Dolby Atmos and DTS: Virtual X for anyone wanting or needing spatial audio support. And you can connect to the TV via Bluetooth (whether that’s playing music or connecting a device like a game controller), Apple AirPlay, and Smart Home integration.
Since the Hisense U6SF Pro is a Fire TV, it comes with Alexa+, Amazon’s AI-powered version of the company’s long-standing voice assistant. One of the places where this TV’s limitations are a little more obvious than slightly more expensive TVs like the Hisense U7 is the fact that, while there is an actual voice assistant on hand, I have to press the mic button on the remote to use it. In essence, there’s no hands-free control here.
As far as using Alexa+, it’s conversational and does one thing that I’ve had issues with on Google TVs and Google Gemini and that is actually play content directly from the home screen when asked instead of bringing me to an intermediary landing page. Sometimes, I don’t want more info. Sometimes, I just want to watch Psych.
Since it is 2026, AI is implemented throughout this TV and not just with Alexa+. For one, it comes with what Hisense calls “Hi-View AI Engine,” which from what I can tell is the same thing as Dolby Vision. Also worth noting that this TV is said to support Dolby Vision IQ but doesn’t have any Dolby-Vision-related settings in its menu (it only pops up as a picture mode when watching certain media), but it does have more generic sounding settings that do the same thing. I assume this is Hisense’s Hi-View AI Engine.
Also implemented on this TV is an AI-powered Ambient mode, a neat feature that I personally don’t get a lot out of, but you might. You can use premade art, create AI-generated art, or upload pictures using the Amazon Photos app.
The interesting thing about a TV like the Hisense U6SF Pro is that the picture quality is generally decent but looks a little two-dimensional compared to more expensive TVs. Whether I’m watching Coco, Top Gun: Maverick, or The Batman, the colors are vibrant enough — this TV has around 96% P3 color coverage — for me to feel like I’m seeing everything as intended. Of course, I have Filmmaker Mode and Imax Mode available along with Dolby Vision IQ.
And the action is smooth — something I noticed with my gaming tests as well. The Hisense U6SF Pro has a 144Hz refresh rate that applies to any content capable of taking advantage, including sources coming through the two 2.1 HDMI ports.
Considering that this TV has all the HDR formats one could need as well as a peak brightness of over 1200 nits (at 10% in Filmmaker Mode) in our benchmarks, I was surprised that the screen felt a little flat. That’s because I consider that flatness to be an issue with the contrast.
While a Hi-QLED mini-LED TV, the Hisense U6SF Pro doesn’t have as much separation of detail in shadows, something I noticed most sharply when gaming but I think contributed to the more two dimensional quality of the picture.
That said, the TV did a good job with blooming, as I didn’t notice any of that halo effect show up when watching a bright subject against a dark background.
The one other issue that I noticed with this TV is vignetting, not just in the corners as I’ve seen with TVs in this range, but along the bottom of the screen as well.
The Hisense U6SF Pro’s sound quality is pretty good. With a 50 watt 2.1 built-in system, it should be good enough to skip a soundbar. And I think it is, within reason. I can hear dialog clearly with whatever I’m watching and there’s a bit of a sound stage where I can hear audio elements go from one side to the other, though it’s only as wide as the TV itself.
Since there’s a built-in sub, you do get some low-end information. For instance, one of the scenes I use to test is the Penguin chase scene in The Batman and explosions had a bit of that low-end rumble that you want when watching an action-packed movie.
I will say that the sound quality won’t reach home theater levels, however, so using a soundbar system with a subwoofer (and surrounds) will still sound better. The sound here, with its crisp highs and balanced mids, will do the job if you don’t want to also invest in a full system.
When deep diving into the settings, I noticed that Devialet has licensed its name to Hisense for this model so you can thank the company for the sound quality here. I also noticed that there’s some Atmos and surround sound virtualization, the latter of which completely removes any stereo separation when on.
There’s also a dialog enhancer that works as intended while not sounding too hinky (this feature can sometimes do that since it’s basically boosting the frequencies where voices typically sit). And there’s also a night mode that does a good job of compressing audio so that you can watch at night without loud sections of audio waking someone up. A five-band EQ is also available, as well as a handful of sound modes.
The Hisense U6SF Pro comes in the usual sizes one would expect from most models these days with its smallest size at 55 inches and its biggest at 100. There are also 65, 75, and 85 inch sizes available.
As far as stands go, the Hisense U6SF Pro has two feet on the outer ends of the TV instead of the center base. While this means that the TV isn’t height adjustable (some stands can be screwed in at different heights), there are a couple places to screw in the feet so that one can have the feet wider or narrower. This is helpful if you have a smaller entertainment console. Just be aware that this particular feature is not available on the 55-inch model.
The ports on the TV are more than enough for most people. There are the usual four HDMI ports — two 2.1 that support 4K@144Hz — a single LAN, two USB (one USB 3.0 and one USB 2.0), an optical port, and an RF Antenna port.
While I don’t want to talk too much about the screen here, Hisense does use an anti-glare screen that makes this TV a little easier to watch in a bright room. Also worth noting is that there’s a 2.1 50 watt built-in sound system with an included subwoofer.
Being a Fire TV, using the Hisense U6SF Pro is going to be a little Amazon-focused. The layout, which is composed of a banner of rotating content followed by rows of suggested content and apps, is littered with ads and content on Prime. Of course, this isn’t new nor is it unique. Whenever I review a Google TV, it’s the same except with Youtube-related suggestions instead of Prime.
The layout itself is one that I think has been broadly adopted because it’s intuitive and lets you navigate to content without having to open an app just to see what’s locked in there. Interestingly, maybe because Amazon wants everyone on Prime, there’s less free content here than I typically find included in an OS. Sure, there’s a Guide app that looks like an old school cable interface with plenty of free content, but that’s about it.
The OSD menu, integrated into the Fire TV OS, seems intuitive to use. However, certain settings, particularly for picture and sound settings, are not accessible through the settings menu in the interface. Instead, you have to press the settings button on the remote when some content is playing to get access to advanced settings. So, if I want to turn on “Intelligent Picture” or change to Filmmaker Mode or Imax Mode (both of which are available on this TV), I need something to be playing first.
There are only two things that really hold the Hisense U6SF Pro back as a gaming TV. The first are the limitations of the screen that I’ve covered above. For instance, because the Hisense U6SF Pro’s HDR support is good but not up to the standards of a mid-range $1,000+ TV (let alone a flagship TV), there’s less differentiation in shadows so games that are overall just darker or have a lot of shadow are harder to make out what’s happening. On top of that, the colors aren’t quite as vibrant as they are on something like the Hisense U7 that I keep comparing this TV to.
That said, without being able to A/B the way I am, the colors probably won’t bother you, as they still look good. You might have to compensate in the settings for the shadows, however.
The other is the fact that, outside of a Game Picture Mode, there aren’t any gaming specific menus. There certainly isn’t a gaming bar. I would appreciate being able to make more specific adjustments based on the type of game or to bring up an FPS counter.
That said, I do appreciate that AMD FreeSync Premium Pro is on offer (non-Pro version for the 100-inch) that uses a variable refresh rate along with an auto low-latency mode. I also appreciate the Motion Rate 480 feature, which gives a virtual representation (though not a true one) of having a 480 Hz refresh rate. The end result is smooth action no matter the game.
When I think of the Hisense U6SF Pro, I think of a few other specific TVs. The Hisense U7 is a natural comparison since they came out at the same time and is the next step up. Interestingly each TV has a slightly different issue. Whereas the U6SF Pro has more vignetting and a flatter picture, the U7 has some color bleed. But the Hisense U7 is a slightly better TV at just $150 more at the 65-inch size and the 75-inch model has even been cheaper in the past. While this is a rarity, the U7 is generally worth the higher price.
I also think of the TCL QM6K, which came out in 2025 and only got a mild refresh in 2026. It occupies a similar mid-range at almost budget price space, especially since its prices have come down since first reviewed last year. Originally, a 65-inch size would have cost $999.99, but it now goes for $649.99 just like the U6SF Pro. And it’s basically the same or similar prices at the various other sizes as well. That’s for a TV with a slightly better picture quality and slightly worse audio and brightness.
Attributes
Notes
Rating
Features
This TV has all the features you could want from HDR and spatial audio support to the inclusion of Alexa+, though you can’t use that last one hands-free.
4.5 / 5
Picture quality
There could be a little more detail in the shadows and there’s more vignetting than I would like, but the picture quality is very good for the price.
4 / 5
Sound quality
You can skip the soundbar with this TV as its 2.1 system has enough detail and low-end rumble for casual use.
4 / 5
Design
The port selection is good including two 2.1 HDMI ports and the screen is anti-glare. While the TV uses feet instead of a stand, they are width-adjustable.
4 / 5
Smart TV and menus
I don’t like how some of the settings are separated. It makes adjusting the screen a bit counter intuitive. But the OS is generally easy to use.
4 / 5
Gaming
The Hisense U6SF Pro comes with some nifty features like AMD Freesync Premium Pro for smooth action, but there’s no game-specific menu and no game bar.
4 / 5
Value
The price for what you get the Hisense U6SF Pro for is quite the deal, especially when you consider all the features on hand.
4.5 / 5
Buy it if...You want mid-range quality at budget prices
With all the features and good quality picture and sound, this TV almost reaches the heights of mid-range TVs at a lower price point.
You don’t want to buy a soundbar
It won’t be home theater level, but for casual use, the 2.1 Devialet-branded system sounds good enough that you won’t feel compelled to buy an external soundbar.
You’re in the Alexa Smart Home ecosystem
Being a Fire TV, it comes with Alexa+ so you can ask it all sorts of questions, not just to play content. And being a Fire TV, you can integrate it into an Alexa-based smart home.
You want hands-free control
There’s something to being able to just talk to your TV, and, unfortunately, that’s just not a feature on this TV. For some, it’s not a big deal. For others, it might be as vital as any of the accessibility ones that usually come stock in a smart TV.
You can stretch your budget a few extra hundred dollars
The Hisense U6SF Pro is a good TV for the price and comes at a good price. But for just a few hundred dollars more, there are slightly better TVs, including ones from Hisense.
Hisense U6SF Pro
TCL QM6K
Hisense U7
Roku Pro Series (2025)
Price (65-inch)
$649.99
$649.99
$999.99
$899.99
Screen type
Hi-QLED Mini-LED
Mini-LED
Mini-LED Pro
QLED
Refresh rate
144Hz
144Hz
165Hz
120Hz
HDR support
Dolby Vision, Dolby Vision IQ, HDR10, HDR10+, HDR10+ Adaptive, HLG
Dolby Vision IQ, HDR10+, HDR10, HLG
HDR10, HDR10+, HDR10+ Adaptive, HLG, Dolby Vision
Dolby Vision IQ, HDR10+ Adaptive, HLG
Smart TV
Fire TV with Alexa+
Google TV
Google TV
Roku
HDMI ports
4 (2x HDMI 2.1)
4 (2x HDMI 2.1)
4 HDMI 2.1
4 (2x HDMI 2.1)
TCL QM6K
The TCL QM6K is just as good value if you’re looking for a mid-range TV for almost budget prices. It has a relatively great picture quality with vibrant colors, and good contrast, but suffers a little bit in the audio department and comes with lower brightness. Read our full TCL QM6K review.
Hisense U7
While the audio on the Hisense U7 has a little less low end and the picture has some color bleed, this TV outperforms its price by a wide margin making it an even better deal than the Hisense U6SF Pro here. However, it is at a slightly higher price point. Read our full Hisense U7 review.
Roku Pro Series (2025)
The Roku Pro Series (2025) is a little more expensive, but comes with a lot of the same features, has a similarly fast refresh rate for gamers (though no game bar), and has a unique shadowbox design that makes it sit flush on the wall when mounted, making it the better TV for that situation. Read our full Roku Pro Series (2025) review.
I used the Hisense U6SF Pro MiniLED TV regularly for a couple weeks. I tested it using streaming shows, movies, music, and games (via PS5). I went through the various features, particularly Alexa+. I also spent time listening to the audio as well as paying attention to the picture quality.
After spending some time with this TV, it’s my humble opinion that this TV is ideal for those who are looking for a mid-range TV but wanting to pay closer to budget prices.
I’ve tested a lot of tech gear over the years from laptops to keyboards and speakers, and so have been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.
Cloudways, owned by DigitalOcean, sits between conventional web hosting and a do-it-yourself cloud server.
It manages the operating system, web stack, security patches, caching, monitoring, and backups while leaving customers with more infrastructure control than most shared or managed WordPress hosts.
We rated Cloudways the top pick in our best WordPress hosting guide for most users. But the important question is whether the platform still makes cloud hosting easier without giving away the flexibility that attracts experienced users.
Cloudways Flexible uses pay-as-you-go billing, with prices that vary by provider and server size. The 1GB DigitalOcean option was listed at $14 a month after the free period. Cloudways displayed $0 during the three-day trial and did not require payment details. There is no conventional money-back guarantee, so the trial is the safest way to inspect the platform before upgrading.
The lowest price should not be treated as the default production recommendation. Cloudways itself suggests 2GB or more for production, staging, or low-traffic sites. Larger DigitalOcean, Vultr, and Linode servers remain comparatively straightforward, while AWS and Google Cloud pricing can be more complex. Flexible is billed according to usage, but stopping a server does not end its charges; customers must delete unwanted resources or close the account correctly.
(Image credit: Cloudways // Future)Backups illustrate how small extras affect the bill. My server defaulted to one off-site backup per day with one-week retention, and an on-demand backup completed in 23 seconds. Cloudways support confirmed that off-site storage costs $0.033 per GB per month, with backup charges rounded up in $0.50 increments, so any non-zero usage effectively costs at least $0.50 for the month. Local backups were disabled by default.
Email hosting and domain registration are not included. Cloudways offers services such as Rackspace Email, Elastic Email, Cloudflare Enterprise, DNS Made Easy, malware protection, and enhanced support separately. That modular approach avoids paying for tools you do not need, but an all-in-one host can be cheaper and simpler for a small personal site.
Cloudways: Features(Image credit: Cloudways // Future)Cloudways Flexible supports WordPress, Magento, Laravel, and other PHP applications across DigitalOcean, Vultr, Linode, AWS, and Google Cloud. Customers choose the provider, server size, and location, then manage applications and infrastructure from the Cloudways panel. Multiple applications can run on one server, which is useful for developers and agencies that do not want a separate hosting account for every site.
The current platform also includes Cloudways Autonomous, a fully managed WordPress and WooCommerce service that scales automatically during traffic spikes. Velocity is a newer product for Node.js applications. Most readers of this review should start with Flexible for granular server control or Autonomous when predictable scaling matters more than choosing the underlying provider.
Flexible servers use the NGINX-based Lightning Stack by default, with a Hybrid stack available when an application needs Apache compatibility. WordPress installations include the Breeze caching plugin and Object Cache Pro. In my test, both were already active in WordPress. Free SSL, staging and cloning, scheduled tasks, Git deployment, SSH and SFTP access, firewalls, IP controls, vertical scaling, and real-time monitoring cover most day-to-day hosting work.
Cloudways Copilot adds AI-assisted monitoring, diagnosis, and fixes for common server problems. It is more relevant than a generic content generator because it addresses infrastructure work that would otherwise require log analysis or support. The platform also offers Cloudflare Enterprise, SafeUpdates, malware protection, transactional email, DNS, and enhanced support as paid services. These options are useful, but they make it important to compare the full monthly cost rather than the server price alone.
Cloudways: In use(Image credit: Cloudways // Future)I opened a three-day Flexible trial without entering a credit card, chose WordPress on a 1GB DigitalOcean server, and selected London. Cloudways estimated seven minutes for provisioning; the server was ready in six. The configuration screen is considerably easier than building the same stack directly on a cloud provider, although it recommends at least 2GB for a production or low-traffic site.
The dashboard separates server controls from application controls. Monitoring presents CPU, memory, disk, and bandwidth without requiring command-line tools. After the setup activity had settled, the test server showed 9% CPU use, 526MB of 961MB of RAM in use, 8.77GB of 24.44GB of disk space used, and 152MB of bandwidth. The interface made it easy to see how much headroom the small server had during testing.
I did hit a genuine onboarding problem. The WordPress admin password shown in Cloudways was rejected, and changing it in Access Details did not fix the login. WordPress reset messages also failed because the new site did not yet have SMTP or an email add-on configured. A support agent checked the account, supplied working credentials through a secure one-time link, and I was able to sign in. The resolution was quick, but credentials displayed in the dashboard should have worked without support.
Cloudways does not provide cPanel or a browser-based file manager. Files are managed through SFTP or SSH, and the panel includes a browser-based SSH terminal. That is normal for many cloud platforms and suits developers, but users accustomed to clicking through File Manager in cPanel may find it an unnecessary extra step.
Cloudways: Speed(Image credit: Cloudways // Future)I tested the public WordPress installation three times with GTmetrix and received similar results. One run from Seattle against the London-hosted server returned an A grade, 98% performance, 99% structure, a 903ms Largest Contentful Paint, zero Total Blocking Time, and zero Cumulative Layout Shift. These are excellent numbers for the entry server.
The test used a fresh, lightweight WordPress site, so a large WooCommerce catalog, heavy theme, or crowded plugin stack will be more demanding. Even with that scope, the result shows that Cloudways' default WordPress setup, Breeze, Object Cache Pro, and managed stack provide a fast starting point before further optimization.
Cloudways: SupportCloudways knowledgebase and FAQ can answer a lot of the questions you may have (Image credit: Cloudways)Standard support is available 24/7 through live chat and tickets, with Advanced and Premium support add-ons for customers who need faster responses and deeper application help. The knowledge base is extensive and covers both platform tasks and command-line workflows.
My support check started with an automated assistant, which suggested resetting the WordPress password directly in the database. After I asked for a person, a human agent joined in about 10 seconds. The agent reviewed the existing conversation, tested the credentials, shared screenshots, and provided a secure fallback login that worked. I liked that the agent did not repeat the bot's checklist and moved directly to resolving the account-specific problem.
The same chat also confirmed the backup charge and explained that Cloudways has no cPanel or browser-based file manager. The answers were specific and useful. In this case, support was fast, technically capable, and willing to inspect the live account rather than simply link to documentation.
Cloudways: AlternativesCloudways charges more than renting the same infrastructure directly from DigitalOcean, Vultr, AWS, or Google Cloud, but the comparison is not like for like.
The premium pays for the managed stack, patches, backups, caching, monitoring, staging, security controls, and support. Experienced system administrators can save money with a raw VPS, while WordPress teams without dedicated server administrators may save time with Cloudways.
Bluehost and DreamHost are easier all-in-one choices for a first website because they bundle domain services, email options, and familiar hosting workflows. Kinsta and WP Engine provide similarly polished managed WordPress experiences with less server-level choice.
ScalaHosting combines managed cloud hosting with a browser-based SPanel file manager and email tools. Cloudways stands out when users want to choose their cloud provider, location, and resources while keeping the operating environment managed.
Is Cloudways cloud hosting right for you?Cloudways is best for a growing WordPress site, WooCommerce store, agency portfolio, or PHP application that has outgrown basic shared hosting. Flexible gives developers meaningful control without the maintenance burden of a raw VPS, while Autonomous is the cleaner option for WordPress teams that expect traffic spikes and do not want to think about server scaling.
It is less convincing for an absolute beginner who wants one bill for hosting, a domain, email, and a simple file manager. The vocabulary, separate server and application layers, and add-on pricing require more attention than mainstream shared hosting. The password issue in my test also shows that onboarding is not friction-free.
Even so, the six-minute deployment, excellent GTmetrix result, detailed monitoring, fast backup, and exceptionally responsive support make a strong practical case for Cloudways. For users who need more power and flexibility than shared hosting but do not want to become their own server administrator, Cloudways remains an excellent choice.
For more options, we've tested the best web hosting services.
Nintendo Switch Sports Resort is here, and this new first-party Nintendo Switch 2 exclusive has big shoes to fill.
You see, when Wii Sports entered the scene 20 years ago, it was a total phenomenon. It was a smash hit thanks to its simplistic yet addictive gameplay, enticing players of all ages…even your grandparents could get involved.
Review infoPlatform reviewed: Nintendo Switch 2
Available on: Nintendo Switch 2 only
Release date: October 22, 2026
Its successor, Wii Sports Resort, expanded on the formula, adding more sports, more depth, and more precise controls. And Nintendo Switch Sports Resort is attempting to do the very same for a new generation — to refine the relatively basic Nintendo Switch Sports and create a more fleshed-out experience, all while retaining that sense of widespread appeal for players of all ages.
But can Nintendo Switch Sports Resort pull off this seemingly daunting task? I’ve spent about 15 hours playing the game solo, with friends, and with fellow gaming journalists online, and this is my verdict.
Getting sporty on Switch 2(Image credit: Nintendo)The original Nintendo Switch Sports was a decent overall experience. It was a bit thin at launch and lacked single-player replayability, but the version we know today has a solid lineup of events, with fairly responsive controls, and is a good party game to enjoy with friends. And luckily, it feels like Nintendo Switch Sports Resort has fixed a lot of the issues I had with its predecessor.
Let’s start off by talking about the sporting variety on offer. There are 12 core sports available here. You’ve got some classic options like Basketball, Bowling, Boxing, and Tennis, as well as some Leisure Sports, such as Power Cruising and Prop Plane. What’s more, there are two sports that have never been seen in previous entries — namely Skateboarding and Thumb Wrestling.
I found that all 12 of the included sports were great fun to play. Let’s start with the returning events. Sports such as Basketball and Tennis are much unchanged, but feel incredibly tight and enjoyable, with accurate motion controls and multiple modes, such as Three-Point Contest for the former and a slower-paced Laid-Back Match for the latter. Bowling, Golf, and Volleyball are similarly unchanged, and continue to be a favorite for my pals and me, with plenty of laughs and tense moments.
Some of the returning sports feel far more refined, though. The biggest example of this is Boxing. Gone are the days of randomly flailing your disconnected gloves to down your opponent. Now, Boxing feels far more tactical. You have a stamina bar; it's far easier to land uppercuts and hooks, and picking the right moment to land your knockout punch is crucial.
Best bit(Image credit: Nintendo)My highlight was definitely conquering the island champion in Table Tennis. This was my favorite sport by quite a margin, and landing a crushing power shot to snag the number one ranking felt incredible. Take that, Yunsu. I’m the champion now.
It’s a similar story with Table Tennis, which, in my view, is the most fun sport in the game. At higher levels, you’ll need to be incredibly strategic with your slice shots to recover back to the centre and perfect your timing to hit shots right onto the table edge. The Return Challenge mode is also a whole lot of fun, and honing your accuracy to beat your high score feels super rewarding.
Archery is another highlight, with the Joy-Con 2 controllers providing pinpoint precision when aiming for the target. There are also some hidden targets to discover, adding plenty of replay value to the sport. Other sports, like Power Cruising and Prop Plane, translate nicely onto Switch 2 as well, and although the latter asks you to hold the Joy-Con 2 in a slightly bizarre way, it’s fairly comfortable and effective after you get used to it.
Out with the old, in with the new(Image credit: Nintendo)We’ll get onto the new events in just a moment, but before we do that, let’s talk about something that irked me a little. Some of the events from the original Nintendo Switch Sports have been cut.
Yes, it’s out with the old and in with the new, as three events — Badminton, Chambara, and Football (or soccer) — are no more. This is a shame, as these were all among my favorite sports last time out. Football in particular is a big miss — it provided a chaotic, all-action multi-player experience with tense last-minute theatrics. Will these sports return in some kind of update or DLC? Quite possibly. But I would’ve loved to have seen them here at launch.
Anyway, no point in crying over spilt milk, eh? After all, the newly added sports are a blast. Thumb wrestling is a truly bizarre addition, and I can’t believe that Nintendo managed to make this feel fun. You have to hold your thumb against your opponent's hand to enlarge it, and then pin them down to attain victory. I feel like they missed a trick by leaving out ‘one, two, three, four, I declare a thumb war’ as the countdown, but otherwise, no complaints here.
Nintendo Switch Sports Resort has made one other key addition that helps it to totally surpass its predecessor, that being Island Crown.
I can see skateboarding dividing opinion, but I had good fun with it. This mode makes use of the Switch 2’s mouse mode capabilities, and this works surprisingly well. Whether I was lifting the Joy-Con 2 to jump or trick, tilting to steer, or pushing back to accelerate, movement always seemed to be accurate. The Skate Sprint mode is definitely the highlight here; tricking to gain speed, sneaking up behind your opponents, and grinding on railings is a whole lot of fun.
What I would say, however, is that the Free Play mode could’ve been better. The world that you skate around isn’t empty or anything, but I wish there was more to do and explore. The Sightseeing Tour is also a little lacking; you’re tasked with collecting photos, which isn’t the most thrilling experience — I would’ve preferred the option to collect customization parts for my board or character instead. This also applies to the Prop Plane and Power Cruising modes, which have Free Play options as well.
Oh, and a quick note on online play, which was very enjoyable in my experience. Here, you can expect highly responsive, smooth controls. Even though my home Wi-Fi is far from great, I ran into no performance issues whatsoever when linking up with a couple of other gaming journalists online — vital when playing reaction-based sports like Table Tennis and Volleyball.
A more replayable sporting experience(Image credit: Nintendo)Nintendo Switch Sports Resort has made one other key addition that helps it to totally surpass its predecessor, that being Island Crown.
Island Crown is a primarily single-player experience, where you have to rise up the ranks in a particular sport and challenge the island champion. Initially, your foes will seem laughably weak, but as you climb up the table, some highly skilled challengers will stand before you. If you manage to beat the island champion, you’ll have the opportunity to face a legendary Mii from the Wii era…I won’t spoil the identity of these, though; I’ll let you discover them for yourself.
This mode has kept me coming back to Nintendo Switch Sports Resort time after time. You get new customization options as you improve your rank; the challenge of beating tough opponents is highly compelling, and the mode serves as an excellent way to develop your sporting prowess. This is the sort of single-player replayability that the original Switch Sports was crying out for, and I absolutely loved it.
I’ve mentioned customization options a few times in this review, so let’s talk about them. By playing sports, you’ll earn points which you can spend at the item center to get a random title, hairstyle, costume, or such things. Previously, you could only earn points online to customize your character — meaning you’d need a Nintendo Switch Online subscription, but no longer. Now, you can earn points offline too, and I loved a lot of the straight-up weird customization options available. I mean, come on, just look at my character.
Just like Wii Sports Resort, this entry succeeds in building on its predecessor with additional depth and versatility.
You can either customize your standard character or a Mii that’s saved on your Switch 2 console. But I never deviated from the standard option. I’m afraid that the Miis just look so out of place in this game, with this visual style...and I feel like it’s time to let them go. Maybe they should simply remain as a relic of a bygone era.
More generally, I would say that the visual style of Nintendo Switch Sports is a bit lackluster. It misses the personality and sauce of the Wii era titles, and goes for a more ‘streamlined,’ modern look which ends up feeling a tad soulless. Even the menus are a touch dull, and given that this is a Nintendo game, I expected more flair, and perhaps a few nods to the company’s most beloved IPs to add even more charm.
The quality of the visuals is generally strong, though, and frame rates are consistent in docked or tabletop mode. I did notice a few texture loading issues in tabletop when playing Prop Plane, but this was fairly minor.
Otherwise, though, I’m coming away from my experience with Nintendo Switch Sports Resort feeling largely positive. The bolstered single-player replayability, enjoyable new sports, refined classics, and brilliantly responsive controls ensure it's a hit that’s especially great for multiplayer mayhem.
It’s a shame that some sports were cut, and I’m still not sold on this series’ visual direction, but just like Wii Sports Resort, this entry succeeds in building on its predecessor with additional depth and versatility. So, if you’re looking for a fun sporting experience to add to your Switch 2 library, this is well worth picking up.
Should you play Nintendo Switch Sports Resort?(Image credit: Nintendo)Play it if…You want to enjoy more multiplayer mayhem on Switch 2
The Nintendo Switch 2 already has an excellent lineup of multiplayer experiences, and Nintendo Switch Sports only adds more variety into the mix. I enjoyed playing all 12 of the sports here with friends and family, and had no end of chaotic showdowns. This one’s definitely going to remain in my party game rotation alongside Mario Party Jamboree and Mario Kart World.
You’re looking for more single-player goodness
The inclusion of Island Crown means that there’s so much single player replayability on offer in Nintendo Switch Sports Resort. Fighting to rise up the ranks and defeat the island champion is an absolute blast, and keeps the experience feeling fresh, even without friends or online rivals.
You’re not a big fan of motion controls
If you don’t enjoy motion controls, this is one to be avoided. All of the sports here highly rely on motion, with no other control schemes available, other than the mouse mode-enabled Skateboarding.
You didn’t vibe with the previous game’s visuals
The visual style from the original Nintendo Switch Sports has been retained here, and again, it doesn’t feel very inspired or charismatic. If that ended up being a major turn off for you last time, don’t expect much in the way of change here.
You can change the dominant hand for each individual sport, alter camera controls for Prop Plane and Skateboarding, and turn on Shot Assist for Golf, which makes it easier to hit the ball accurately. Otherwise, there aren’t many ways to customize your experience in Nintendo Switch Sports Resort, with no colorblind modes or alternate control schemes available.
How I reviewed Nintendo Switch Sports Resort(Image credit: Nintendo)I spent 15 hours playing Nintendo Switch Sports Resort, trying out Island Crown mode in single-player, as well as a number of core and Leisure Sports via local and online multiplayer.
For the most part, I played in docked mode, with my console connected to the Sky Glass Gen 2 TV and the Marshall Heston 120 soundbar. However, I did dabble in some tabletop mode gameplay, and used the JBL Live Beam 4 to enjoy in-game audio.
More generally, I’ve spent years reviewing gaming software and hardware here at TechRadar. I’ve reviewed a number of Nintendo Switch 2 exclusives, including Fire Emblem: Fortune’s Weave, Yoshi and the Mysterious Book, and Kirby Air Riders. I've also logged more than 50 hours on the original Nintendo Switch Sports, which I directly compared against its newly released successor.
First reviewed October 2026